# Adobe Stock Scraper — No Login, Bulk API (`apivault_labs/adobe-stock-scraper`) Actor

Collect Adobe Stock search and portfolio records with available keywords and asset metadata. Coverage limits apply. No login. Bulk export: JSON, CSV, Excel and API. Pay per result: $0.2/1K asset results; usage extra.

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

## Pricing

from $0.20 / 1,000 asset results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Adobe Stock Scraper — Search & Portfolios

![Adobe Stock image search and portfolio research — illustrative cover](https://api.apify.com/v2/key-value-stores/uperEu8JaKBQtvmSJ/records/adobe-stock-readme-cover-v1.png?signature=363gyVdt44f0H1FP5n1X)

*Illustrative artwork; not a sample scraper result.*

Turn an Adobe Stock artwork, search or contributor link into structured data: **asset IDs, titles, Adobe links, previews, available keyword tags and content types**. Use the results for creative research, contributor reviews and spreadsheet workflows. No Adobe login or API key is required.

[Run the scraper](https://console.apify.com/actors/lfLAPEfoKX1XAAPtW) · [Input reference](https://apify.com/apivault_labs/adobe-stock-scraper/input-schema) · [API](https://apify.com/apivault_labs/adobe-stock-scraper/api)

### Start in three steps

1. Paste an Adobe Stock **artwork, search or contributor link**, or enter **keywords or asset IDs**. Leave the other input empty.
2. Choose **Maximum results**. Start with25; optionally choose a content type for keyword searches.
3. Click **Start**, then open **Assets** and export JSON or CSV.

Try this search:

```json
{"url":"https://stock.adobe.com/search?k=business","maxItems":25}
```

Leaving the link and keywords blank runs the example search `business teamwork`. Running on Apify requires an Apify account and consumes platform resources.

### Ready-to-use examples

Copy a preset below into the JSON input editor. The five search/portfolio presets are also tested saved Tasks; the artwork preset is a direct input example.

#### Individual artworks

```json
{"assetIds":["507970140","https://stock.adobe.com/198081475"],"maxItems":25}
```

You can also paste one artwork link into **Adobe Stock link**. Only an exact matching Adobe ID is delivered. Unresolved IDs are listed in the summary; unavailable metadata stays empty. Detail rows have `resultType: ASSET_DETAILS` and no search position. This lookup returns available metadata, not original licensed files or private sales data.

#### Keyword research

```json
{
  "keywords": [
    "business"
  ],
  "maxItems": 200
}
```

#### Contributor portfolio

```json
{
  "url": "https://stock.adobe.com/contributor/204881684",
  "maxItems": 50
}
```

#### Photos for a creative brief

```json
{
  "keywords": [
    "business"
  ],
  "assetType": "photo",
  "maxItems": 25
}
```

#### Vectors for design research

```json
{
  "keywords": [
    "business"
  ],
  "assetType": "vector",
  "maxItems": 25
}
```

#### Find an asset within a search

```json
{
  "keywords": [
    "business"
  ],
  "assetType": "photo",
  "assetIds": [
    "507970140"
  ],
  "maxItems": 100
}
```

The result limit applies across the entire run. With multiple keywords or `urls`, later inputs can be skipped once that limit is reached. `assetIds` selects matches within the collected search results; IDs not found are listed in the run summary.

### Use with AI assistants through MCP

Connect a compatible MCP client to:

```text
https://mcp.apify.com/?tools=apivault_labs/adobe-stock-scraper
```

Use Apify OAuth where your client supports it, or configure your **own Apify token** in the client's secure credentials. No Adobe credentials are needed. The [Apify MCP guide](https://docs.apify.com/mcp) covers client setup.

Example prompt:

> Use Adobe Stock Scraper to collect25 photo results for “business”. Return their titles, Adobe links and available tags in a table.

The tool is `apivault_labs--adobe-stock-scraper`. Use the same input JSON shown above. After the run finishes, read its dataset; for larger outputs, read the returned dataset in batches. Check the run status, summary and errors before treating a collection as complete.

### What you receive

**Assets** shows previews, titles, clickable Adobe links, IDs, tags and collection context. All delivered fields remain available in the JSON export. This compact example uses fields from a real successful run:

```json
{
  "assetId": "507970140",
  "title": "diverse coworkers working together in boardroom, brainstorming, discussing and analyzing and planning business strategy.",
  "assetUrl": "https://stock.adobe.com/507970140",
  "thumbnailUrl": "https://t4.ftcdn.net/jpg/05/07/97/01/240_F_507970140_mWRJUOHJcwCe20pGEYIpNjF8qUAvqjYd.jpg"
}
```

Missing metadata is left empty. Collection time means when the run observed the data; it does not establish when Adobe last updated it.

### Coverage and limits

- Search and contributor collections are **bounded samples**, with at most2000 results. They are not guaranteed complete portfolios or catalogues.
- Photos, illustrations, vectors and videos can be selected for keyword searches, up to100 results. Portfolios and larger collections use **All content**.
- Tags are included when available and may be absent. Tag priority, AI flags, dimensions and other missing metadata are not inferred.
- Result order is not a verified Adobe website rank, newest-first order or download ranking. Source freshness is not verified.
- Individual artwork links/IDs return exact matches when available. Missing IDs do not prove deletion. Advanced AI, orientation and original-size filters remain unavailable. Only metadata and previews are returned; licensed originals are not downloaded.
- Each run collects its own output. No history, accumulation or notifications are included.

If a run fails or returns fewer results, inspect **Run summary** and **Errors**. An empty collection means no matching data was delivered; it does not prove an asset is absent from Adobe Stock.

### Understand your collection

Open **Collection report** after a run for delivered rows, completed searches, removed duplicates and the stopping reason. **SUCCEEDED** means the requested collection finished within its sample and output limits; it does not mean the full catalogue was collected. **PARTIAL** means useful rows were delivered but a result spending limit or a later collection error stopped the rest. Those rows remain available in the dataset. **FAILED** means collection or delivery could not finish without any confirmed delivered rows.

Large all-content and contributor samples remove exact repeated asset records before delivery and billing. Conflicting records for the same ID are rejected rather than merged. Strict small search-window validation remains in place. If a later search fails, already verified rows from earlier searches are preserved; the report identifies the incomplete run. An asset found in two different searches remains two context-specific result rows.

### Pricing

Pay per delivered result: **$0.20 per 1,000 dataset rows** on every plan, plus Apify platform usage. There is no separate Actor start fee. One result is one asset row delivered for a search or contributor collection; the same asset in different searches is a separate row. Errors and empty collections do not incur result charges. Platform usage can still apply to those runs.

Check the Store **Pricing** tab for the effective price and any activation date. Your run spending limit controls how many paid results can be delivered; reaching it can stop a run with a partial dataset.

# Actor input Schema

## `url` (type: `string`):

Paste an individual artwork, search or contributor link. Artwork links resolve by their exact Adobe ID. Leave blank for keywords or asset IDs.

## `keywords` (type: `array`):

One search phrase per line, up to10. Leave empty when using a contributor link. If no link or phrases are entered, the example search is business teamwork.

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

Total output limit for the entire run. Up to2000 for all-content searches or portfolios; up to100 when filtering by content type. Fewer results may be available.

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

Applies to keyword searches only. Choose All content for contributor portfolios or limits above100.

## `includeKeywords` (type: `boolean`):

Include tags when available. Some collections have no tags; missing values are left empty. Tag order is not Adobe keyword priority.

## `urls` (type: `array`):

Up to10 artwork, search or contributor links, one per line. Leave the single link blank. Maximum results applies across the entire batch.

## `creatorId` (type: `string`):

Alternative to a contributor link: enter its numeric ID. Leave the link and search keywords empty.

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

Up to100 IDs or artwork links. With no keywords/search/contributor link, resolve each exact ID. With a search context, select matching results from that collection. Unresolved IDs appear in the summary; no missing rows are invented.

## Actor input object example

```json
{
  "url": "https://stock.adobe.com/search?k=business",
  "keywords": [
    "business teamwork"
  ],
  "maxItems": 25,
  "assetType": "all",
  "includeKeywords": true
}
```

# Actor output Schema

## `report` (type: `string`):

No description

## `assets` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `errors` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("apivault_labs/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 '{}' |
apify call apivault_labs/adobe-stock-scraper --silent --output-dataset

```

## MCP server setup

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