# DeviantArt Email Scraper (`parsebird/deviantart-email-scraper`) Actor

Scrape DeviantArt artworks, galleries and popular art, and find public artist emails from profile bios. Titles, descriptions, tags, image URLs, stats and creator details.

- **URL**: https://apify.com/parsebird/deviantart-email-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 deviantart results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### DeviantArt Email Scraper

DeviantArt Email Scraper extracts artworks, galleries, popular art and **public artist email addresses** from [DeviantArt](https://www.deviantart.com), then returns titles, descriptions, tags, image URLs, stats and creator profiles as clean data you can export or pull through an API.

<table><tr>
<td style="border-left:4px solid #05CC47;padding:12px 16px;font-weight:600">
Search DeviantArt by keyword, scrape any creator's gallery, browse 40 topic categories or Daily Deviations, or build a list of artists who publish a contact email in their bio, with email-domain and niche filters, in one actor with no login needed.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Use the Apify actor "parsebird/deviantart-email-scraper" (actor ID: parsebird~deviantart-email-scraper) to scrape DeviantArt via the ApifyClient: client.actor("parsebird/deviantart-email-scraper").call(run_input={"sourceType": "emailLeads", "targets": ["commissions open"], "location": "Brazil", "emailDomains": ["gmail.com"], "maxItems": 50}). Inputs: sourceType (string, required: "artworkSearch" | "gallery" | "popular" | "emailLeads", default "artworkSearch"); targets (array of strings: search terms, DeviantArt search URLs, tag URLs such as https://www.deviantart.com/tag/fantasy, artwork URLs, usernames, @handles, profile/gallery/gallery-folder URLs; may be empty in popular mode for Daily Deviations); maxItems (integer, total rows, empty = all up to 50,000); category (string, one of 40 DeviantArt topic tags e.g. "digitalart", "fantasy", "anime", "pixelart", "conceptart", "characterdesign", "photography"; filters artworkSearch and popular); popularSort ("popular" | "newest", tag feeds in popular mode); includeCreatorProfile (boolean, default false, adds creator bio, website, country, social links, watchers and bio emails to artwork rows); location (string, emailLeads only, appended to each search term); emailDomains (array, emailLeads only, keep emails on these domains); proxyConfiguration (object, default Apify Proxy). Output: one JSON object per row with target, rank, deviationId, deviationUrl, title, description, publishedAt, category, tags, imageUrl, thumbnailUrl, type, favourites, comments, views, isAiGenerated, isMature, creatorUsername, creatorName, creatorProfileUrl, creatorAvatarUrl, creatorWebsite, creatorCountry, creatorSocialLinks, creatorWatchers, creatorDeviations, emails, emailDomains, profileBio. Pricing: pay per result saved. Full API spec: https://apify.com/parsebird/deviantart-email-scraper/api. Get your token: https://console.apify.com/account/integrations.
```

### What is DeviantArt Email Scraper?

**DeviantArt Email Scraper** is a **DeviantArt scraper and unofficial DeviantArt API** that turns public DeviantArt pages into structured data. It has four modes:

- 🔎 **Artwork search**: scrape DeviantArt search results for any keyword, with an optional topic filter.
- 🖼️ **Gallery or profile artwork**: scrape every artwork in a creator's gallery, or one gallery folder.
- 🔥 **Popular artwork**: scrape DeviantArt topic tag feeds (popular or newest first) or the staff-picked **Daily Deviations**.
- 📧 **Email leads**: find artists whose public DeviantArt profile shows an **email address**. Search a niche such as `commissions open`, add a location, keep only the email domains you want, and get one row per artist with their email, bio, website, country, social links and watcher count.

The easiest way to try it: click **Start** with the example input. It searches DeviantArt for `fantasy art` and returns 50 artworks in a few seconds.

### Why scrape DeviantArt?

[DeviantArt](https://www.deviantart.com) calls itself the largest online art gallery and community, with over 650 million pieces of art. That makes it a great place to find and contact artists, and to track visual trends:

- **Find artists to hire.** Game studios, publishers, agencies and brands use it to find illustrators, concept artists and character designers who openly take commissions.
- **Build artist outreach lists.** Collect public emails from artists in one niche or country for partnership, licensing or commission offers.
- **Research art trends.** See which topics, styles and artworks get the most favourites and views, and how many are AI-generated.
- **Monitor creators.** Track a list of galleries and get new uploads, descriptions and stats on a schedule.
- **Build image datasets.** Collect image URLs, titles, tags and descriptions for moodboards, search or classification work.

### What can DeviantArt Email Scraper do?

- 📧 **Find public artist emails**: email leads come from each artist's About-page bio, tagline, website and social links. Artwork rows also pick up emails written in the artwork description. Simple disguised forms like `name [at] gmail [dot] com` are caught too.
- 🎯 **Filter email leads**: add a place, style or niche with `location`, and keep only emails on domains such as `gmail.com` with `emailDomains`. Each artist is returned once per run.
- 🔗 **Paste any DeviantArt link**: search URLs, tag URLs, artwork URLs, profile URLs, gallery URLs and gallery-folder URLs all work, as do plain usernames and `@handles`.
- 🏷️ **40 topic categories**: filter by DeviantArt topics such as Digital Art, Fantasy, Anime, Pixel Art, Concept Art, Character Design, Photography and more.
- 📝 **Full artwork details**: title, full description text (links kept), tags, publish date, favourites, comments, views, AI-generated and mature flags, full-size image URL and thumbnail.
- 👤 **Creator profiles**: username, real name when public, avatar, website, country, social links, watcher and artwork counts, and bio. This is on by default for email leads, and optional for artwork rows.
- ⏱️ **Runs on Apify**: [schedule](https://docs.apify.com/platform/schedules) daily or weekly runs, call it through the [Apify API](https://docs.apify.com/api/v2), and send results to Google Sheets, Slack, Make, Zapier, n8n or webhooks with [integrations](https://apify.com/integrations). Export to **JSON, CSV, Excel**, HTML or XML.

### What data can you extract from DeviantArt?

Every mode returns the same row shape, so you can combine runs in one sheet.

| Field | Description |
|-------|-------------|
| `target` | The search term, URL or username that produced the row |
| `rank` | 1-based position in the search, tag feed or gallery (for email leads, the lead number) |
| `deviationId`, `deviationUrl` | DeviantArt artwork ID and public URL |
| `title`, `description` | Artwork title and full description text. In email-lead rows, `description` is the artist's tagline |
| `publishedAt` | Publish time (ISO 8601, UTC) |
| `category` | The topic from your category filter or tag feed, when one applies |
| `tags` | The artwork's DeviantArt tags |
| `imageUrl`, `thumbnailUrl` | Full-view image URL and a 300 px wide thumbnail |
| `type` | `image`, `literature` and other DeviantArt post types |
| `favourites`, `comments`, `views` | Engagement numbers |
| `isAiGenerated`, `isMature` | DeviantArt's AI-generated and mature-content flags |
| `creatorUsername`, `creatorName`, `creatorProfileUrl`, `creatorAvatarUrl` | Who made it |
| `creatorWebsite`, `creatorCountry`, `creatorSocialLinks` | Public website, country and social links from the artist's profile |
| `creatorWatchers`, `creatorDeviations` | Artist's watcher (follower) count and number of artworks |
| `emails`, `emailDomains` | Public email addresses found, and their domains |
| `profileBio` | The artist's About-page bio text |

Profile fields (`profileBio`, `creatorCountry`, `creatorSocialLinks`, `creatorWatchers`, `creatorDeviations`) are filled in email-lead rows, and in artwork rows when **Add creator profile details** is on. Otherwise they are empty.

### How to scrape DeviantArt artist emails

1. Open [DeviantArt Email Scraper](https://apify.com/parsebird/deviantart-email-scraper) in Apify Console and click **Try for free**.
2. Set **What to scrape** to **Email leads (public artist emails)**.
3. In **Targets**, add one or more niche search terms, e.g. `commissions open`, `character design commission` or `hire me illustrator`. You can also add `@handles` or profile URLs to check specific artists.
4. Optional: type a **Location or niche** such as `Brazil` or `anime`, and list **Email domains to keep** such as `gmail.com`.
5. Set **Max results** to the number of leads you want and click **Start**.
6. Download the leads as CSV or Excel, or open the **Email leads** view in the dataset.

To scrape artworks instead, pick **Artwork search**, **Gallery or profile artwork** or **Popular artwork**, and add search terms, usernames or tags to **Targets**.

### Input examples

**Artwork search with a topic filter:**

```json
{
  "sourceType": "artworkSearch",
  "targets": ["dragon", "https://www.deviantart.com/search?q=elf+warrior"],
  "category": "digitalart",
  "maxItems": 200
}
```

**Whole galleries of several creators, with their profile details:**

```json
{
  "sourceType": "gallery",
  "targets": ["JJcanvas", "@threeanglework", "https://www.deviantart.com/threeanglework/gallery/62731486/featured"],
  "includeCreatorProfile": true
}
```

**Newest artworks in a topic:**

```json
{
  "sourceType": "popular",
  "category": "cyberpunk",
  "popularSort": "newest",
  "maxItems": 100
}
```

Leave `targets` and `category` empty in popular mode to scrape **Daily Deviations**.

**Email leads for one country and one email provider:**

```json
{
  "sourceType": "emailLeads",
  "targets": ["commissions open", "hire me illustrator"],
  "location": "Brazil",
  "emailDomains": ["gmail.com"],
  "maxItems": 100
}
```

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `sourceType` | string | **Yes** | `artworkSearch` | `artworkSearch`, `gallery`, `popular` or `emailLeads` |
| `targets` | array | Yes, except popular | — | Search terms, DeviantArt URLs, usernames or `@handles`, depending on the mode |
| `maxItems` | integer | No | all (max 50,000) | Total rows to save across all targets |
| `category` | string | No | any | One of 40 DeviantArt topic tags. Filters artwork search and popular mode |
| `popularSort` | string | No | `popular` | `popular` or `newest`, for tag feeds in popular mode |
| `includeCreatorProfile` | boolean | No | `false` | Add creator bio, website, country, social links, watchers and emails to artwork rows |
| `location` | string | No | — | Email leads: added to every search term |
| `emailDomains` | array | No | all | Email leads: keep only emails on these domains |
| `proxyConfiguration` | object | No | Apify Proxy | Proxy settings (see FAQ) |

### Output example

An artwork row from the **Artwork search** mode:

```json
{
  "target": "fantasy art",
  "rank": 1,
  "deviationId": "861612130",
  "deviationUrl": "https://www.deviantart.com/threeanglework/art/fantasy-Maps-Art-coomiissions-for-steven-861612130",
  "title": "fantasy Maps Art coomiissions for steven",
  "description": "hi guys... sorry for long time i am not update my deviantart",
  "publishedAt": "2020-11-19T02:32:20.000Z",
  "category": null,
  "tags": ["animebackground", "background", "environment", "fantasy", "landscape", "maps", "medievalfantasy", "nature", "backgroundart"],
  "imageUrl": "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/b0069016-.../fantasy_maps_art_coomiissions_for_steven_by_threeanglework_de8zc6a-fullview.jpg?token=...",
  "thumbnailUrl": "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/b0069016-.../fantasy_maps_art_coomiissions_for_steven_by_threeanglework_de8zc6a-300w.jpg?token=...",
  "type": "image",
  "favourites": 1337,
  "comments": 109,
  "views": 330680,
  "isAiGenerated": false,
  "isMature": false,
  "creatorUsername": "threeanglework",
  "creatorName": "threeanglework",
  "creatorProfileUrl": "https://www.deviantart.com/threeanglework",
  "creatorAvatarUrl": "https://a.deviantart.net/avatars/t/h/threeanglework.jpg?12",
  "creatorWebsite": null,
  "creatorCountry": null,
  "creatorSocialLinks": [],
  "creatorWatchers": null,
  "creatorDeviations": null,
  "emails": [],
  "emailDomains": [],
  "profileBio": null
}
```

A row from the **Email leads** mode (email masked in this example):

```json
{
  "target": "commissions open",
  "rank": 15,
  "deviationId": "783541542",
  "deviationUrl": "https://www.deviantart.com/nissaclily/art/commission%28brust%29-783541542",
  "title": "commission(brust)",
  "publishedAt": "2019-01-31T09:30:18.000Z",
  "favourites": 211,
  "creatorUsername": "Nissaclily",
  "creatorProfileUrl": "https://www.deviantart.com/Nissaclily",
  "creatorWebsite": "https://twitter.com/nissaclily",
  "creatorCountry": "South Korea",
  "creatorSocialLinks": ["https://instagram.com/n_issaclily", "https://twitter.com/nissaclily", "https://www.youtube.com/channel/UCBOJNOtcQxiFvrC3Edx2hyQ"],
  "creatorWatchers": 2673,
  "creatorDeviations": 204,
  "emails": ["n.i*******@gmail.com"],
  "emailDomains": ["gmail.com"],
  "profileBio": "Thank you for visiting my gallery.\nE-mail: n.i*******@gmail.com"
}
```

Image URLs contain a DeviantArt access token, which is part of the public link.

### How much does it cost to scrape DeviantArt?

DeviantArt Email Scraper uses pay-per-event pricing. You pay for each row saved to the dataset. In email-leads mode that means you pay only for artists who have a public email: artists checked without one are free.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| Result scraped (per 1,000) | **$2.99** | **$2.69** | **$2.39** | **$1.99** |

The example run (50 artworks) costs about $0.15 on the Free plan. 1,000 email leads cost $2.99 on the Free plan and $1.99 on Gold. You can set a maximum cost per run in the run options, and the actor stops when it is reached.

### Python and JavaScript API examples

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/deviantart-email-scraper").call(run_input={
    "sourceType": "emailLeads",
    "targets": ["commissions open", "character design commission"],
    "emailDomains": ["gmail.com", "outlook.com"],
    "maxItems": 200,
})
for lead in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(lead["creatorUsername"], lead["emails"], lead["creatorCountry"], lead["creatorWatchers"])
```

**JavaScript:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/deviantart-email-scraper').call({
    sourceType: 'artworkSearch',
    targets: ['cyberpunk city'],
    category: 'digitalart',
    maxItems: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((a) => console.log(a.title, a.favourites, a.imageUrl));
```

See the [API tab](https://apify.com/parsebird/deviantart-email-scraper/api) for more clients and endpoints.

### FAQ

**Where do the emails come from?**
Only from text the artist has made public on DeviantArt. Email leads use the About-page bio, tagline, website field and social links. Artwork rows also use the artwork description. The actor does not guess emails, look them up on other sites or log in. If an artist has not published an email, they are not returned as a lead.

**How many artists have a public email?**
It depends on the niche. In our tests with commission-related searches such as `commissions open`, between roughly one in five and one in ten artists checked had a public email in their profile. The run log shows how many artists were checked for each search term. General art searches find fewer. Search for terms that working artists use, such as `commissions open`, `hire me`, `for hire` or `freelance illustrator`, to find more leads. In email-leads mode you only pay for artists with an email.

**Why did my email-leads run return fewer rows than `maxItems`?**
The actor checks up to 5,000 artists per search term. If fewer of them have a public email that matches your `emailDomains`, you get fewer rows. Add more search terms or remove the domain filter.

**How does the category filter work?**
DeviantArt now organises art by topic tags instead of fixed categories. In **Artwork search**, the category keeps only artworks tagged with that topic, so a narrow topic may need many search pages. In **Popular** mode with no tags, the category is the tag feed that gets scraped.

**Can I scrape mature or private artworks?**
No. The actor sees what a logged-out visitor sees: public artworks with DeviantArt's standard content filter. Mature-filtered, subscription-only and private works are skipped.

**Can it download the image files?**
It returns direct `imageUrl` and `thumbnailUrl` links, which you can download with any tool. The full-view image is the largest version DeviantArt shows publicly, which may be smaller than the original upload.

**Do I need a proxy?**
Keep the default Apify Proxy on. DeviantArt limits how many requests one IP address can send in a few minutes, and the actor spreads larger runs across several proxy IPs. With the proxy off, small runs still work, but large runs pause every few hundred requests until the limit resets.

**How fast is it?**
In our tests a 1,500-artwork search took about 9 minutes, and 60 email leads took about 2 minutes.

**Can I schedule runs and connect other tools?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) for recurring runs and [integrations](https://docs.apify.com/platform/integrations) for Google Sheets, Zapier, Make, n8n, Slack or webhooks.

**Something is missing or broken?**
Open an issue in the **Issues** tab. We read every report and fix problems quickly.

### Is it legal to scrape DeviantArt?

DeviantArt Email Scraper only collects information that anyone can see on deviantart.com without logging in. Email addresses and profile details are **personal data** under laws such as the EU GDPR, the UK GDPR and the California CCPA, even when they are public. You are responsible for having a lawful basis to store and use them, and for following anti-spam rules such as CAN-SPAM when you contact artists. Respect artists' copyright: the image links are for reference, not for republishing. You should also check DeviantArt's terms of service. If you are unsure, ask a lawyer. Read more in Apify's blog post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Other creator and image scrapers

- [Dribbble Designers Scraper](https://apify.com/parsebird/dribbble-designers-scraper): designer profiles and contact details from Dribbble
- [Pinterest Search Scraper](https://apify.com/parsebird/pinterest-search-scraper): pins and images for any Pinterest search
- [Pinterest Profile Scraper](https://apify.com/parsebird/pinterest-profile-scraper): Pinterest profiles, boards and pins
- [Pinterest Image Downloader](https://apify.com/parsebird/pinterest-image-downloader): download Pinterest images in bulk
- [Bio-Link Scraper](https://apify.com/parsebird/biolink-scraper): contact links from Linktree, Beacons, Komi and similar pages, useful with `creatorSocialLinks`
- [Social Handle Checker](https://apify.com/parsebird/social-handle-checker): check whether a handle exists on TikTok, X, Snapchat, Twitch and GitHub
- [Fiverr Scraper](https://apify.com/parsebird/fiverr-scraper): freelance gigs, sellers and prices on Fiverr
- [Unsplash Image Scraper](https://apify.com/parsebird/unsplash-image-scraper), [Pexels Stock Image Scraper](https://apify.com/parsebird/pexels-stock-image-scraper) and [Pixabay Image Scraper](https://apify.com/parsebird/pixabay-image-scraper): free stock photos with photographer details

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/deviantart-email-scraper/changelog.md

# Actor input Schema

## `sourceType` (type: `string`):

Pick the mode. <b>Artwork search</b>: search DeviantArt for keywords. <b>Gallery or profile artwork</b>: every artwork in a creator's gallery. <b>Popular artwork</b>: tag feeds or Daily Deviations. <b>Email leads</b>: creators whose public profile shows an email address.

## `targets` (type: `array`):

Add one entry per line. <b>Artwork search</b>: search terms (<code>fantasy art</code>), DeviantArt search URLs, tag URLs or artwork URLs. <b>Gallery</b>: usernames, <code>@handles</code>, profile, gallery or gallery-folder URLs. <b>Popular</b>: tags such as <code>cyberpunk</code> or tag URLs, or leave empty for Daily Deviations. <b>Email leads</b>: niche search terms (<code>commissions open</code>), or <code>@handles</code> and profile URLs to check specific creators.

## `maxItems` (type: `integer`):

Stop after this many saved rows across all targets. Leave empty to collect everything available (up to 50,000 rows per run).

## `category` (type: `string`):

DeviantArt now organises art by topic tags. For <b>Artwork search</b>, keep only artworks tagged with this topic. For <b>Popular</b>, browse this topic when no tags are given, or keep only artworks with this tag from your tags. Ignored in Gallery and Email leads.

## `popularSort` (type: `string`):

Order for tag feeds in <b>Popular</b> mode: DeviantArt's popular ranking, or newest uploads first.

## `includeCreatorProfile` (type: `boolean`):

For artwork rows, also read each creator's About page to fill <code>profileBio</code>, website, country, social links, watcher count and public emails. Adds one request per new creator.

## `location` (type: `string`):

Email leads only. Add a place, topic, style or niche. It is added to every search term, e.g. <code>commissions open</code> + <code>Brazil</code>.

## `emailDomains` (type: `array`):

Email leads only. Keep only emails on these domains, e.g. <code>gmail.com</code> or <code>outlook.com</code>. Leave empty to keep every public email.

## `proxyConfiguration` (type: `object`):

DeviantArt limits how many requests one IP address can send. The default Apify Proxy spreads large runs over several IPs. Keep it on unless you use your own proxies.

## Actor input object example

```json
{
  "sourceType": "artworkSearch",
  "targets": [
    "fantasy art"
  ],
  "maxItems": 50,
  "category": "",
  "popularSort": "popular",
  "includeCreatorProfile": false,
  "emailDomains": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sourceType": "artworkSearch",
    "targets": [
        "fantasy art"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/deviantart-email-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sourceType": "artworkSearch",
    "targets": ["fantasy art"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/deviantart-email-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sourceType": "artworkSearch",
  "targets": [
    "fantasy art"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/deviantart-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/deviantart-email-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XNWj69eRp5rEHDbO2/builds/GdZXho7WK7ob5nztz/openapi.json
