deviantART-API icon indicating copy to clipboard operation
deviantART-API copied to clipboard

Use deviantART's RSS/XML feeds as a CMS to dynamically embed deviation galleries on your website.

deviantART-API

Use DeviantArt's RSS/XML feeds as a CMS to dynamically embed deviation galleries on your website.

DeviantArt users can create Gallery Folders to organise their deviations (e.g. http://fu51on.deviantart.com/gallery/)

This script returns the data from all the deviations from the specified folder.

What is the URL of the feed and its parameters?

The RSS URL always begins with: https://backend.deviantart.com/rss.xml followed by some query parameters, e.g. https://backend.deviantart.com/rss.xml?q=gallery:fu51on/27123391

DeviantArt's RSS documentation only provides a couple of examples of how to construct RSS URLs.

Here is an expanded list of query parameters:

Query params Example Description
q=by:[deviant name] q=by:fu51on
q=gallery:[deviant name] q=gallery:fu51on
q=gallery:[deviant name]/[gallery] q=gallery:fu51on/27123391
q=[search term] q=frogs
q=in:[category] q=in:visual_art
offset=[number] offset=60
order=[number] order=5 Order by newest
order=[number] order=9 Order by all-time popularity
limit=[number] limit=10 1-60

How can I get the Featured and Scraps galleries?

Please see https://github.com/jamesl1001/deviantART-API/issues/4#issuecomment-1951384692

What data does the feed provide?

  • title
  • link
  • permalink
  • date
  • keywords (doesn't seem to return anything at the moment)
  • rating
  • category
  • deviant's name
  • deviant's avatar
  • copyright
  • description
  • thumbnail (w: 150)
  • thumbnail (w: 300)
  • deviation

Usage - PHP

Example

<?php
    require_once('getDeviations.php');
    $deviations = getDeviations('https://backend.deviantart.com/rss.xml?q=gallery:fu51on/27123391');
?>

getDeviations() returns an array of objects containing all the data about each deviation from the provided gallery folder.

You can use a foreach loop to extract the data you require:

<?php
    $i = 0;

    foreach($deviations as $deviation): ?>
        <p><?= $deviations[$i]->title; ?></p>
        <img src="<?= $deviations[$i]->image; ?>"/>
<?php
        $i++;
    endforeach;
?>

Options

getDeviations($url, $limit, $start);

$url: DeviantArt feed url https://backend.deviantart.com/rss.xml?q=gallery:[deviant name]/[gallery]

$limit: Limit the number of deviations to be displayed

$start: How many deviations to skip before displaying the rest

Usage - Javascript

processDeviations() is called once getDeviations() is complete which returns an array of objects containing all the data about each deviation from the provided gallery folder.

You can use a for loop to extract the data you require:

Example

<script src="getDeviations.js"></script>
<script>
    getDeviations('https://backend.deviantart.com/rss.xml?q=gallery:fu51on/27123391', null, 0);

    function processDeviations(deviations) {
        for(var i = 0, l = deviations.length; i < l; i++) {
            console.log(deviations[i].link);
            console.log(deviations[i].title);
            console.log(deviations[i].image);
        }
    }
</script>

Options

getDeviations(url, limit, start);

url: DeviantArt feed url https://backend.deviantart.com/rss.xml?q=gallery:[deviant name]/[gallery]

limit: Limit the number of deviations to be displayed, default is null

start: How many deviations to skip before displaying the rest, default is 0