# Adobe Stock Analyzer (`kawsar/adobe-stock-analyzer`) Actor

Adobe Stock analyzer that looks up assets by ID or URL and returns downloads, views, keywords, and creator metadata so microstock contributors can track performance and study competitor portfolios.

- **URL**: https://apify.com/kawsar/adobe-stock-analyzer.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.20 / 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 Analyzer: look up asset downloads, views, and metadata

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

Adobe Stock Analyzer helps microstock contributors and researchers look up Adobe Stock assets by ID or stock.adobe.com URL and export downloads, views, keywords, creator details, AI flags, and preview links in a structured dataset. Paste one or more asset IDs or full Stock links, run the actor, and get clean rows ready for tracking, competitor analysis, or bulk metadata export.

### What data does this actor extract?

For each Adobe Stock asset the actor resolves, it can return:

- Asset identity: asset ID, title, kind/media type, content type, file format
- Performance: download count, view count
- Creator: creator name, creator ID, country
- Dates: upload date, creation date
- Visuals: thumbnail URL, dimensions, width, height, size in bytes, transparency and loop flags
- Classification: category name/ID, premium level, keywords, vector type
- AI signals: generative AI (gentech) flag and a normalized AI status
- Media extras: duration, framerate, video preview URL and size, template type and category IDs
- Links: asset URL and complementary preview (comp) URL

### Use cases

- **Contributor download tracking**: monitor how your own Adobe Stock files perform over time without manual UI clicks
- **Competitor portfolio analysis**: inspect rival assets by ID or URL and compare downloads, views, and keyword strategy
- **AI content checks**: spot generative AI (gentech) flags across batches of assets
- **Bulk metadata export**: pull titles, keywords, dimensions, and creator fields into a dataset or spreadsheet
- **Research**: collect structured Stock metadata for market or niche studies

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `assetIds` | array of strings | yes | Adobe Stock asset IDs or full stock.adobe.com URLs (one per line) |
| `maxItems` | integer | no | Max assets to process (default 100). Use `0` for no limit (a safety ceiling of 100000 still applies) |
| `timeoutSecs` | integer | no | Overall run timeout in seconds (default 300, max 3600) |
| `requestTimeoutSecs` | integer | no | Per-request HTTP timeout in seconds (default 30) |
| `proxyConfiguration` | object | no | Optional Apify proxy settings |

#### Example input

The `assetIds` field accepts bare numeric IDs and any stock.adobe.com link shape (photo, video, vector, 3D, template, audio):

```json
{
  "assetIds": [
    "841165203",
    "https://stock.adobe.com/841165203",
    "https://stock.adobe.com/images/example-photo/1004530648",
    "https://stock.adobe.com/video/1506237232",
    "https://stock.adobe.com/3d-assets/439387925"
  ],
  "maxItems": 0,
  "timeoutSecs": 300,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Output example

```json
{
  "assetId": "841165203",
  "assetTitle": "Modern workspace with laptop and coffee",
  "assetKind": "Photo",
  "contentType": "image/jpeg",
  "fileFormat": "JPEG",
  "creatorName": "Example Creator",
  "creatorId": "123456789",
  "countryName": "United States",
  "uploadDate": "2024-05-12T10:22:00Z",
  "creationDate": "2024-05-10T08:00:00Z",
  "downloadCount": 1842,
  "viewCount": 25670,
  "assetUrl": "https://stock.adobe.com/images/841165203",
  "thumbnailUrl": "https://as2.ftcdn.net/v2/jpg/example_thumb.jpg",
  "dimensions": "6000x4000",
  "width": 6000,
  "height": 4000,
  "sizeBytes": 8453120,
  "categoryName": "Business",
  "categoryId": "8",
  "aiStatus": "not_ai",
  "isGentech": false,
  "isTransparent": false,
  "isLoop": null,
  "premiumLevelId": 1,
  "mediaTypeId": 1,
  "stockId": "841165203",
  "compUrl": "https://stock.adobe.com/comp/841165203",
  "keywords": ["workspace", "laptop", "coffee", "desk", "business"],
  "vectorType": null,
  "duration": null,
  "framerate": null,
  "videoPreviewUrl": null,
  "videoPreviewWidth": null,
  "videoPreviewHeight": null,
  "templateTypeId": null,
  "templateCategoryIds": null
}
```

### Output fields

| Field | Description |
| --- | --- |
| `assetId` | Adobe Stock asset ID |
| `assetTitle` | Asset title |
| `assetKind` | Media kind (Photo, Illustration, Vector, Video, etc.) |
| `contentType` | MIME / content type |
| `fileFormat` | Derived file format |
| `creatorName` | Creator display name |
| `creatorId` | Creator ID |
| `countryName` | Creator country |
| `uploadDate` | Upload / create date from the API |
| `creationDate` | Creation date |
| `downloadCount` | Number of downloads |
| `viewCount` | Number of views |
| `assetUrl` | Public Adobe Stock asset URL |
| `thumbnailUrl` | Preview thumbnail URL |
| `dimensions` | Width x height string |
| `width` / `height` | Pixel dimensions |
| `sizeBytes` | File size in bytes |
| `categoryName` / `categoryId` | Category labels |
| `aiStatus` | Normalized AI status (`generative_ai`, `not_ai`, `unknown`) |
| `isGentech` | Generative AI flag |
| `isTransparent` | Transparency flag |
| `isLoop` | Loop flag (video/audio where applicable) |
| `premiumLevelId` | Premium level identifier |
| `mediaTypeId` | Media type ID |
| `stockId` | Stock ID |
| `compUrl` | Complementary preview URL |
| `keywords` | Keyword list |
| `vectorType` | Vector type when applicable |
| `duration` / `framerate` | Video/audio timing fields |
| `videoPreviewUrl` / `videoPreviewWidth` / `videoPreviewHeight` | Video preview metadata |
| `templateTypeId` / `templateCategoryIds` | Template metadata |

### How it works

1. Normalize each input line into an Adobe Stock asset ID (plain digits or parsed from a stock.adobe.com URL).
2. Cap the list with `maxItems` (hard max 1000).
3. Look up the assets in batches of about 50 IDs.
4. Optionally route each batch through Apify Proxy.
5. Normalize the response into dataset rows.
6. On batch failure, push an error row for that batch and continue with the rest.

No private Adobe API key is required for the default configuration.

### Legal notes

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Adobe Inc. Adobe Stock and related marks belong to their respective owners. Use the actor in line with Adobe's terms of use and applicable laws. Do not use it to circumvent access controls or collect beyond publicly available metadata.

### Integrations

Export results from the Apify dataset to Google Sheets, webhooks, Make, Zapier, or your own HTTP endpoint. You can also schedule runs and chain this actor with other Apify actors in a workflow.

### Ready to try

Paste a few Adobe Stock asset IDs or stock.adobe.com URLs, optionally turn on Apify Proxy, and run the actor. You get back a dataset of downloads, views, keywords, creator info, and AI flags.
![Adobe Stock Analyzer CTA](https://pub-1fc4ccceb1d148e696171698971572cd.r2.dev/apify-actors/adobe-stock-analyzer/adobe-stock-analyzer-cta.png)

# Actor input Schema

## `assetIds` (type: `array`):

Adobe Stock asset IDs or full stock.adobe.com URLs (one per line). Bare numeric IDs and any stock.adobe.com link shape are accepted (e.g. /images/, /video/, /3d-assets/, /templates/, /audio/).

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

Maximum number of assets to process. Use 0 for no limit (process every provided ID). A safety ceiling of 100000 still applies.

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

Overall actor run timeout in seconds.

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

Timeout for each HTTP request to the Adobe Stock Files API.

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

Optional Apify proxy settings for steadier request routing.

## Actor input object example

```json
{
  "assetIds": [
    "841165203",
    "https://stock.adobe.com/841165203",
    "https://stock.adobe.com/images/example/1004530648",
    "https://stock.adobe.com/video/1506237232",
    "https://stock.adobe.com/3d-assets/439387925"
  ],
  "maxItems": 100,
  "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 = {
    "assetIds": [
        "841165203",
        "https://stock.adobe.com/841165203",
        "https://stock.adobe.com/images/example/1004530648",
        "https://stock.adobe.com/video/1506237232",
        "https://stock.adobe.com/3d-assets/439387925"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/adobe-stock-analyzer").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 = {
    "assetIds": [
        "841165203",
        "https://stock.adobe.com/841165203",
        "https://stock.adobe.com/images/example/1004530648",
        "https://stock.adobe.com/video/1506237232",
        "https://stock.adobe.com/3d-assets/439387925",
    ],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kawsar/adobe-stock-analyzer").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 '{
  "assetIds": [
    "841165203",
    "https://stock.adobe.com/841165203",
    "https://stock.adobe.com/images/example/1004530648",
    "https://stock.adobe.com/video/1506237232",
    "https://stock.adobe.com/3d-assets/439387925"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kawsar/adobe-stock-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kawsar/adobe-stock-analyzer"
        }
    }
}

```

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/9mxOViMYmR3PJ2VNt/builds/1p4u25nTNo0dVZBaH/openapi.json
