# Adobe Stock Scraper (`kawsar/adobe-stock-scraper`) Actor

Adobe Stock scraper that pulls structured metadata from Adobe Stock search results.
It collects photos, illustrations, vectors, videos, templates, 3D, and audio. You can filter generative AI assets, sort by relevance, downloads, or newest, and titles,  keywords, download counts, and preview URLs.

- **URL**: https://apify.com/kawsar/adobe-stock-scraper.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Adobe Stock Scraper: collect photos, videos, and creative asset metadata

![Adobe Stock Scraper cover](https://pub-1fc4ccceb1d148e696171698971572cd.r2.dev/apify-actors/adobe-stock-scraper/adobe-stock-scraper-cover.png)

An Apify actor that pulls structured metadata from Adobe Stock search results and creator portfolios: titles, creators, dimensions, keywords, download counts, and preview URLs. It works across photos, videos, illustrations, vectors, templates, 3D, and audio, and supports the usual search filters (price, orientation, AI, size, colors, icons, and more).

### What data does this actor extract?

Each dataset item can include asset identity (`assetId`, `stockId`, `assetTitle`, `detailsUrl`), creator fields (`creatorId`, `creatorName`, `countryName`), classification (`contentType`, `mediaTypeId`, `categoryInfo`, `premiumLevelId`, `isGenerativeAi`, `isTransparent`, `iconOption`), dimensions and dates, keywords, popularity (`downloadCount`, `viewCount`), image previews (`thumbUrl`, `thumb500Url`, `thumb1000Url`, `compUrl`), and video preview fields when the asset is a video.

### Use cases

- **Creative trend research**: search a topic and compare which formats and keywords show up most often
- **Contributor analysis**: pull a creator portfolio by Adobe Stock creator ID and sort by newest or downloads
- **Mood-board research**: collect preview URLs and titles for a keyword without manual browsing
- **AI content monitoring**: include, exclude, or return only generative AI (gentech) assets
- **Filtered creative scans**: combine orientation, transparent background, isolated cutouts, copy space, color, and minimum size
- **Bulk metadata export**: download results as JSON, CSV, or Excel from Apify storage

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxItems` | integer | `100` | Max unique assets to save. Use `0` to keep going until results run out (hard cap 1000 when set above 0). |
| `query` | string | `people` | Search phrase. Leave empty for creator-only or broad search. |
| `creatorId` | integer | (none) | Adobe Stock creator ID for portfolio or in-portfolio search. |
| `assetType` | string | `all` | `all`, `images`, `videos`, `templates`, `3d`, `photo`, `illustration`, `vector`, `video`, `template`, or `audio`. `images` = photo+illustration+vector. |
| `priceFilter` | string | `all` | `all`, `standard` (non-premium), or `premium`. |
| `orientation` | string | `all` | `all`, `horizontal`, `vertical`, or `square`. |
| `panoramic` | boolean | `false` | Only panoramic assets. |
| `isolated` | boolean | `false` | Only isolated / cutout assets. |
| `transparent` | boolean | `false` | Only transparent-background assets. |
| `copySpace` | boolean | `false` | Only assets with copy space. |
| `aiFilter` | string | `all` | `all`, `only`, or `exclude` generative AI assets. |
| `iconOption` | string | `all` | `all`, `icon_sheet`, or `single_icon`. |
| `minWidth` | integer | (none) | Minimum width in pixels. |
| `minHeight` | integer | (none) | Minimum height in pixels. |
| `minMegapixels` | number | (none) | Minimum area in megapixels. |
| `colors` | string | (none) | Hex colors without `#`, comma-separated (e.g. `ff0000`). |
| `order` | string | `relevance` | `relevance`, `downloads`, `newest`, `featured`, or `undiscovered`. |
| `timeoutSecs` | integer | `300` | Overall actor timeout in seconds. |
| `requestTimeoutSecs` | integer | `30` | Per-request timeout in seconds. |
| `proxyConfiguration` | object | Datacenter (Anywhere) | Proxy type and location for requests. Supports Datacenter, Residential, Special, and custom proxies. Optional. |

#### Filters not supported

A few filters from the Adobe Stock website UI aren't supported here: people / model presence, ethnicity, age / gender / number of people, local artists, depth of field, vivid color, and editorial-only. They're left out on purpose rather than faked. For "undiscovered", use `order: undiscovered` as the sort option instead.

#### Example input

```json
{
    "maxItems": 100,
    "query": "summer",
    "assetType": "images",
    "priceFilter": "standard",
    "orientation": "horizontal",
    "aiFilter": "exclude",
    "order": "relevance",
    "proxyConfiguration": { "useApifyProxy": true }
}
```

Transparent icons with a red color bias:

```json
{
    "maxItems": 50,
    "query": "icon",
    "assetType": "vector",
    "transparent": true,
    "iconOption": "icon_sheet",
    "colors": "ff0000",
    "proxyConfiguration": { "useApifyProxy": true }
}
```

Creator portfolio (newest photos):

```json
{
    "maxItems": 100,
    "creatorId": 205216144,
    "assetType": "photo",
    "order": "newest",
    "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

Results land in the default dataset. Example photo item:

```json
{
    "assetId": 349979908,
    "assetTitle": "Multi ethnic people of different age looking at camera collage mosaic horizontal banner.",
    "creatorId": 205271089,
    "creatorName": "fizkes",
    "countryName": "Russian Federation",
    "pixelWidth": 4000,
    "pixelHeight": 1000,
    "contentType": "image/jpeg",
    "mediaTypeId": 1,
    "categoryInfo": { "id": 695, "name": "People" },
    "keywordList": [{ "name": "adult" }, { "name": "business" }, { "name": "people" }],
    "createdAt": "2020-05-17 22:25:26.108788",
    "thumbUrl": "https://as2.ftcdn.net/v2/jpg/03/49/97/99/500_F_349979908_zOFuSYmAZ2d7kDt6YSKC4oQCHYQfjNrZ.jpg",
    "downloadCount": 5027,
    "viewCount": 0,
    "isGenerativeAi": false,
    "isTransparent": false,
    "detailsUrl": "https://stock.adobe.com/..."
}
```

| Field | Type | Description |
|-------|------|-------------|
| `assetId` | integer | Adobe Stock asset ID |
| `assetTitle` | string | Asset title |
| `creatorId` | integer | Creator ID |
| `creatorName` | string | Creator name |
| `downloadCount` | integer | Reported downloads |
| `isGenerativeAi` | boolean | Generative AI flag |
| `isTransparent` | boolean | Transparent background flag |
| `detailsUrl` | string | Asset details page |
| `thumbUrl` | string | Preview thumbnail |

### How it works

1. Read search inputs (`query`, `creatorId`, `assetType`, filters, `order`, `maxItems`).
2. Query Adobe Stock search with pagination (100 results per page).
3. Optionally route requests through Apify proxy configuration.
4. Normalize each file into a flat dataset record and push unique asset IDs only.
5. Stop when `maxItems` is reached or the search has no more results.
6. On a successful run, log a short request for a 5-star review.

### Legal notes

Respect Adobe Stock terms and copyright rules. This actor is independent and is not affiliated with, endorsed by, or sponsored by Adobe. Adobe Stock and related marks belong to their owners.

### Integrations

Connect Adobe Stock Scraper with other apps using [Apify integrations](https://apify.com/integrations). You can wire it to Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more, or use [webhooks](https://docs.apify.com/integrations/webhooks) when a run finishes.

Run the actor, then export the dataset as JSON, CSV, or Excel from Apify storage.

### Ready to try it?

![Adobe Stock Scraper CTA](https://pub-1fc4ccceb1d148e696171698971572cd.r2.dev/apify-actors/adobe-stock-scraper/adobe-stock-scraper-cta.png)

# Actor input Schema

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

Maximum number of unique assets to save. Use 0 to keep collecting until Adobe Stock runs out of results for this search. Hard cap per run is 1000 unless you set 0.

## `query` (type: `string`):

Keyword phrase to search on Adobe Stock, such as people working or mountain landscape. Leave empty for creator-only or broad searches.

## `creatorId` (type: `integer`):

Optional Adobe Stock creator ID. Use alone to pull that creator's portfolio, or combine with query to search inside the portfolio.

## `assetType` (type: `string`):

Type of Adobe Stock asset to return. Grouped options: Images (photo+illustration+vector), Videos, Templates, 3D. Or pick a single subtype.

## `priceFilter` (type: `string`):

Filter by Adobe Stock price tier. Standard = non-premium, Premium = premium only. Always sent to the API (fixes pagination).

## `orientation` (type: `string`):

Image/video orientation filter.

## `panoramic` (type: `boolean`):

When enabled, return only panoramic assets.

## `isolated` (type: `boolean`):

When enabled, return only isolated / cutout assets.

## `transparent` (type: `boolean`):

When enabled, return only assets with a transparent background.

## `copySpace` (type: `boolean`):

When enabled, return assets marked as having copy space.

## `aiFilter` (type: `string`):

Filter generative AI (Firefly / gentech) assets: all, only AI, or exclude AI.

## `iconOption` (type: `string`):

Filter icon assets: all, icon sheets, or single icons.

## `minWidth` (type: `integer`):

Minimum asset width in pixels (maps to image\_width N-).

## `minHeight` (type: `integer`):

Minimum asset height in pixels (maps to image\_height N-).

## `minMegapixels` (type: `number`):

Optional minimum area in megapixels (maps to area\_m\_pixels N-).

## `colors` (type: `string`):

Comma-separated hex colors without #, e.g. ff0000 or ff0000,00ff00.

## `order` (type: `string`):

How to sort Adobe Stock search results.

## `timeoutSecs` (type: `integer`):

Overall run timeout in seconds.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout when calling the Adobe Stock search API.

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

Select proxies to use for requests. Helps avoid IP blocking and rate limits. Datacenter proxies are fastest; Residential proxies are harder to detect.

## Actor input object example

```json
{
  "maxItems": 100,
  "query": "business teamwork",
  "creatorId": 205216144,
  "assetType": "all",
  "priceFilter": "all",
  "orientation": "all",
  "panoramic": false,
  "isolated": false,
  "transparent": false,
  "copySpace": false,
  "aiFilter": "all",
  "iconOption": "all",
  "minWidth": 3000,
  "minHeight": 2000,
  "minMegapixels": 10,
  "colors": "ff0000",
  "order": "relevance",
  "timeoutSecs": 300,
  "requestTimeoutSecs": 30,
  "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 = {
    "maxItems": 100,
    "query": "people",
    "assetType": "all",
    "priceFilter": "all",
    "orientation": "all",
    "aiFilter": "all",
    "iconOption": "all",
    "order": "relevance",
    "timeoutSecs": 300,
    "requestTimeoutSecs": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/adobe-stock-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 = {
    "maxItems": 100,
    "query": "people",
    "assetType": "all",
    "priceFilter": "all",
    "orientation": "all",
    "aiFilter": "all",
    "iconOption": "all",
    "order": "relevance",
    "timeoutSecs": 300,
    "requestTimeoutSecs": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kawsar/adobe-stock-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 '{
  "maxItems": 100,
  "query": "people",
  "assetType": "all",
  "priceFilter": "all",
  "orientation": "all",
  "aiFilter": "all",
  "iconOption": "all",
  "order": "relevance",
  "timeoutSecs": 300,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kawsar/adobe-stock-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kawsar/adobe-stock-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/NkJXb8hz0J4IIueVA/builds/l1Vcq9vb9930v98Rc/openapi.json
