# Unsplash Scraper (`solidcode/unsplash-scraper`) Actor

\[💰 $2.5 / 1K] Extract high-resolution stock photos from Unsplash. Search by keyword or paste Unsplash search, collection, user-profile, and topic URLs. Get multi-resolution download URLs, photographer attribution, tags, dimensions, and likes. Filter by orientation, color, and sort order.

- **URL**: https://apify.com/solidcode/unsplash-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Unsplash Scraper

Pull high-resolution stock photos from Unsplash at scale — five download resolutions per image, photographer attribution, tags, camera EXIF, GPS location, dominant color, dimensions, and like counts for every photo. Search by keyword or paste any Unsplash search, collection, topic, or photographer URL. Built for designers, marketers, and machine-learning teams who need royalty-free imagery and structured metadata in bulk without downloading photos one at a time.

### Why This Scraper?

- **Five resolution URLs per photo** — raw (original), full, regular (~1080px), small (~400px), and thumb (~200px) on every image, so you can grab a hero banner and a thumbnail from the same run.
- **Four URL types, not just keywords** — paste an Unsplash search, collection, topic, or photographer-profile URL and pull the whole curated set. Most Unsplash scrapers accept a keyword and nothing else.
- **Eleven dominant-color filters** — black & white plus ten named colors (black, white, yellow, orange, red, purple, magenta, green, teal, blue) to match a brand palette without eyeballing thumbnails.
- **Full camera EXIF and GPS location** — make, model, aperture, focal length, ISO, and shutter speed, plus latitude, longitude, and place name when the photographer tagged them.
- **Photographer attribution on every row** — display name, @username, Unsplash profile URL, and external portfolio link, so honoring the Unsplash license is one CSV column away.
- **Orientation filtering** — landscape, portrait, or squarish, applied at the source so a wallpaper run never returns a portrait shot.
- **Up to 10,000 photos per query, or fetch the entire library** — set a precise cap or pass `0` to pull everything a keyword, topic, or collection returns.
- **Tags, dimensions, dominant color hex, like counts, and download totals** — the high-signal metadata Unsplash exposes for free, captured on a flat one-row-per-photo schema ready for a spreadsheet.

### Use Cases

**Design & Creative**
- Build a mood board of brand-color-matched photos in one run
- Pull a topic or collection's curated set for a campaign visual library
- Source landscape hero images and matching square crops together

**Marketing & Social Media**
- Stock a content calendar with royalty-free imagery by theme
- Filter to a single dominant color to fit a post template
- Track a photographer's latest uploads for fresh, on-brand visuals

**Machine Learning & Computer Vision**
- Assemble labeled image datasets by keyword for model training
- Pull tags and EXIF as structured metadata alongside image URLs
- Build orientation- or color-balanced datasets using the native filters

**Wallpaper & App Catalogs**
- Populate a wallpaper app from high-resolution topic collections
- Catalog images at multiple resolutions for responsive delivery
- Refresh a gallery with newest-first sorting on a schedule

**Market & Trend Research**
- Rank photos by like count to spot rising visual trends
- Map which dominant colors and orientations perform in a niche
- Monitor a topic for emerging subjects and styles

### Getting Started

#### Basic Keyword Search

The simplest possible run — one keyword, 100 photos:

```json
{
    "queries": ["mountains"],
    "maxResultsPerQuery": 100
}
````

#### Filtered Search (Orientation + Color + Sort)

Landscape, blue-toned photos, newest first:

```json
{
    "queries": ["ocean", "coastline"],
    "orientation": "landscape",
    "color": "blue",
    "orderBy": "latest",
    "maxResultsPerQuery": 200
}
```

#### Scrape Unsplash URLs (Collection, Topic, Profile)

Paste any Unsplash search, collection, topic, or photographer URL:

```json
{
    "startUrls": [
        "https://unsplash.com/collections/317099/wallpapers",
        "https://unsplash.com/t/nature",
        "https://unsplash.com/@anniespratt"
    ],
    "maxResultsPerQuery": 50
}
```

#### Fast Bulk Catalog (Details Off)

Skip tags, EXIF, and location for a faster, lighter run when you only need image URLs and attribution:

```json
{
    "queries": ["minimalist office", "abstract texture"],
    "includePhotoDetails": false,
    "maxResultsPerQuery": 500
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `queries` | string\[] | `["mountains"]` | Keywords to search on Unsplash. Each keyword runs independently and returns its own set of photos. Leave empty to use only `startUrls`. |
| `startUrls` | string\[] | `[]` | Unsplash URLs to scrape — a search page, a collection, a topic, or a photographer's profile. Filters encoded in a search URL are preserved. |

#### Results

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResultsPerQuery` | integer | `100` | Maximum photos per keyword or URL. The form allows up to 10,000; set to `0` to fetch everything available for that source. |

#### Filters

Filters apply to keyword searches. For collection, topic, and profile URLs the curated order is preserved (sort order still applies).

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `orientation` | select | `Any` | Photo shape: Any, Landscape, Portrait, or Squarish. |
| `color` | select | `Any` | Dominant color: Any, Black & White, or one of black, white, yellow, orange, red, purple, magenta, green, teal, blue. |
| `orderBy` | select | `Most relevant` | Sort order: Most relevant or Newest first. |
| `contentFilter` | select | `Low` | Content safety: Low (unfiltered) or High (hide sensitive content). |

#### Output Detail

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includePhotoDetails` | boolean | `true` | Enrich each photo with tags, camera EXIF, and location. Turn off for faster, lighter runs when you only need image URLs, dimensions, and photographer attribution. |

### Output

Each photo is one flat row. Here's a representative result with details enabled:

```json
{
    "recordType": "image",
    "id": "Dwu85P9SOIk",
    "query": "mountains",
    "position": 1,
    "description": "Foggy mountain summit at sunrise",
    "altDescription": "snow-capped mountain under a clear sky",
    "slug": "snow-capped-mountain-Dwu85P9SOIk",
    "unsplashUrl": "https://unsplash.com/photos/Dwu85P9SOIk",
    "width": 6000,
    "height": 4000,
    "color": "#26260c",
    "likes": 1834,
    "createdAt": "2017-05-15T22:46:32Z",
    "updatedAt": "2026-05-10T08:12:04Z",
    "urlRaw": "https://images.unsplash.com/photo-1494891848038?ixid=...",
    "urlFull": "https://images.unsplash.com/photo-1494891848038?q=85&fm=jpg",
    "urlRegular": "https://images.unsplash.com/photo-1494891848038?w=1080",
    "urlSmall": "https://images.unsplash.com/photo-1494891848038?w=400",
    "urlThumb": "https://images.unsplash.com/photo-1494891848038?w=200",
    "downloadUrl": "https://unsplash.com/photos/Dwu85P9SOIk/download",
    "tags": ["mountain", "fog", "sunrise", "landscape"],
    "exif": {
        "make": "SONY",
        "model": "ILCE-7M3",
        "aperture": "8.0",
        "focal_length": "24.0",
        "iso": 100,
        "exposure_time": "1/250"
    },
    "location": {
        "name": "Dolomites, Italy",
        "latitude": 46.4102,
        "longitude": 11.8440
    },
    "downloads": 482910,
    "photographerName": "Bailey Zindel",
    "photographerUsername": "baileyzindel",
    "photographerUrl": "https://unsplash.com/@baileyzindel",
    "photographerPortfolio": "https://baileyzindel.com",
    "scrapedAt": "2026-05-30T14:30:00Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"image"` |
| `id` | string | Unsplash photo ID |
| `query` | string | The keyword or source URL that produced this row |
| `position` | number | 1-based rank within its query or URL |
| `description` | string | Photographer-written description |
| `altDescription` | string | Alt text / auto-generated description |
| `slug` | string | Unsplash URL slug |
| `unsplashUrl` | string | The photo's page on unsplash.com |
| `likes` | number | Like count |
| `downloads` | number | Total download count (when details are on) |
| `tags` | string\[] | Tag titles (when details are on) |
| `createdAt` | string | ISO upload timestamp |
| `updatedAt` | string | ISO last-updated timestamp |
| `scrapedAt` | string | ISO timestamp when the row was collected |

#### Image URLs

| Field | Type | Description |
|-------|------|-------------|
| `urlRaw` | string | Raw original-resolution URL |
| `urlFull` | string | Full-resolution URL |
| `urlRegular` | string | ~1080px URL |
| `urlSmall` | string | ~400px URL |
| `urlThumb` | string | ~200px thumbnail URL |
| `downloadUrl` | string | Unsplash download-tracking URL |

#### Dimensions & Color

| Field | Type | Description |
|-------|------|-------------|
| `width` | number | Native pixel width |
| `height` | number | Native pixel height |
| `color` | string | Dominant color as a hex code |

#### EXIF & Location

Populated when `includePhotoDetails` is on, and only when the photographer supplied the data.

| Field | Type | Description |
|-------|------|-------------|
| `exif.make` | string | Camera manufacturer |
| `exif.model` | string | Camera model |
| `exif.aperture` | string | Aperture (f-stop) |
| `exif.focal_length` | string | Focal length in mm |
| `exif.iso` | number | ISO speed |
| `exif.exposure_time` | string | Shutter speed |
| `location.name` | string | Place name |
| `location.latitude` | number | Latitude |
| `location.longitude` | number | Longitude |

#### Photographer

| Field | Type | Description |
|-------|------|-------------|
| `photographerName` | string | Photographer display name |
| `photographerUsername` | string | Photographer @username |
| `photographerUrl` | string | Photographer's Unsplash profile URL |
| `photographerPortfolio` | string | Photographer's external portfolio URL |

### Tips for Best Results

- **Turn off `includePhotoDetails` for bulk catalog builds.** When you only need image URLs, dimensions, and attribution, switching details off skips a per-photo lookup and makes large runs noticeably faster.
- **Use a topic or collection URL to pull curated sets.** Unsplash editors hand-pick topics and collections, so a topic URL returns a cleaner, more cohesive set than a broad keyword.
- **Set `orderBy` to "Newest first" to monitor fresh uploads.** Pair it with a tight keyword or a photographer profile URL to catch new photos as they land.
- **Combine keywords and URLs in one run.** Mix several keywords with collection, topic, and profile URLs in a single invocation — they all flow into one dataset.
- **Filters apply to keyword searches.** Orientation, color, and content filters shape keyword results; collection, topic, and profile URLs return their curated order, so apply a search instead when you need strict color or orientation control.
- **EXIF and location are photographer-supplied.** Many photos omit camera and GPS data, so treat `exif` and `location` as bonus fields rather than guaranteed ones.
- **Start with a small cap to preview.** Run 20–50 photos first to confirm the keyword and filters match your needs, then raise `maxResultsPerQuery`.

### Pricing

**$2.50 per 1,000 results** — flat pay-per-result, undercutting comparable Unsplash extractors while shipping more filters and a far richer output schema.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
| 100,000 | $250.00 |

A "result" is any photo row in the output dataset. **No compute charges — you only pay per result returned.** Platform fees (storage) depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate creative, research, and content workflows. Photos on Unsplash are provided under the Unsplash License — review and follow its terms, and credit photographers using the attribution fields (`photographerName`, `photographerUrl`, `photographerPortfolio`) included on every row. Users are responsible for complying with applicable laws and Unsplash's Terms of Service. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

## `queries` (type: `array`):

Keywords to search on Unsplash (e.g. 'mountains' or 'minimalist office'). Each keyword runs independently and returns its own set of photos. Leave empty if you only want to scrape pasted Unsplash URLs below.

## `startUrls` (type: `array`):

Optional: paste full Unsplash URLs — a search results page (e.g. 'https://unsplash.com/s/photos/sunset'), a collection ('https://unsplash.com/collections/...'), a photographer's profile ('https://unsplash.com/@username'), or a topic ('https://unsplash.com/t/nature'). Any filters encoded in a search URL are preserved.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of photos to return per keyword or URL. Defaults to 100. Set to 0 to fetch everything available for that keyword, collection, profile, or topic. The form allows up to 10,000 per keyword or URL; for more than that, use 0 to pull the full set.

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

Filter by photo shape.

## `color` (type: `string`):

Filter by the photo's dominant color.

## `orderBy` (type: `string`):

How to rank results.

## `contentFilter` (type: `string`):

Content safety level. 'High' hides photos that may contain sensitive content; 'Low' returns everything.

## `includePhotoDetails` (type: `boolean`):

When on, each photo is enriched with its tags, camera EXIF, and location (one extra lookup per photo). Turn off for faster, lighter runs when you only need image URLs, dimensions, and photographer attribution.

## Actor input object example

```json
{
  "queries": [
    "mountains"
  ],
  "startUrls": [],
  "maxResultsPerQuery": 100,
  "orientation": "any",
  "color": "any",
  "orderBy": "relevant",
  "contentFilter": "low",
  "includePhotoDetails": true
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped photos with thumbnail, dimensions, photographer, likes, and page URL.

## `downloads` (type: `string`):

Table of all resolution variants (raw, full, regular, small, thumb) plus the download-tracking URL for each photo.

# 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 = {
    "queries": [
        "mountains"
    ],
    "startUrls": [],
    "maxResultsPerQuery": 100,
    "orientation": "any",
    "color": "any",
    "orderBy": "relevant",
    "contentFilter": "low",
    "includePhotoDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/unsplash-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 = {
    "queries": ["mountains"],
    "startUrls": [],
    "maxResultsPerQuery": 100,
    "orientation": "any",
    "color": "any",
    "orderBy": "relevant",
    "contentFilter": "low",
    "includePhotoDetails": True,
}

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

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "mountains"
  ],
  "startUrls": [],
  "maxResultsPerQuery": 100,
  "orientation": "any",
  "color": "any",
  "orderBy": "relevant",
  "contentFilter": "low",
  "includePhotoDetails": true
}' |
apify call solidcode/unsplash-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/unsplash-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Unsplash Scraper",
        "description": "[💰 $2.5 / 1K] Extract high-resolution stock photos from Unsplash. Search by keyword or paste Unsplash search, collection, user-profile, and topic URLs. Get multi-resolution download URLs, photographer attribution, tags, dimensions, and likes. Filter by orientation, color, and sort order.",
        "version": "1.0",
        "x-build-id": "El7mf8uy03wJBfBQp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~unsplash-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-unsplash-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~unsplash-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-unsplash-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~unsplash-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-unsplash-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "queries": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Keywords to search on Unsplash (e.g. 'mountains' or 'minimalist office'). Each keyword runs independently and returns its own set of photos. Leave empty if you only want to scrape pasted Unsplash URLs below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Unsplash URLs",
                        "type": "array",
                        "description": "Optional: paste full Unsplash URLs — a search results page (e.g. 'https://unsplash.com/s/photos/sunset'), a collection ('https://unsplash.com/collections/...'), a photographer's profile ('https://unsplash.com/@username'), or a topic ('https://unsplash.com/t/nature'). Any filters encoded in a search URL are preserved.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "Maximum Results per Query",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of photos to return per keyword or URL. Defaults to 100. Set to 0 to fetch everything available for that keyword, collection, profile, or topic. The form allows up to 10,000 per keyword or URL; for more than that, use 0 to pull the full set.",
                        "default": 100
                    },
                    "orientation": {
                        "title": "Orientation",
                        "enum": [
                            "any",
                            "landscape",
                            "portrait",
                            "squarish"
                        ],
                        "type": "string",
                        "description": "Filter by photo shape.",
                        "default": "any"
                    },
                    "color": {
                        "title": "Dominant Color",
                        "enum": [
                            "any",
                            "black_and_white",
                            "black",
                            "white",
                            "yellow",
                            "orange",
                            "red",
                            "purple",
                            "magenta",
                            "green",
                            "teal",
                            "blue"
                        ],
                        "type": "string",
                        "description": "Filter by the photo's dominant color.",
                        "default": "any"
                    },
                    "orderBy": {
                        "title": "Sort Order",
                        "enum": [
                            "relevant",
                            "latest"
                        ],
                        "type": "string",
                        "description": "How to rank results.",
                        "default": "relevant"
                    },
                    "contentFilter": {
                        "title": "Content Safety",
                        "enum": [
                            "low",
                            "high"
                        ],
                        "type": "string",
                        "description": "Content safety level. 'High' hides photos that may contain sensitive content; 'Low' returns everything.",
                        "default": "low"
                    },
                    "includePhotoDetails": {
                        "title": "Include tags, EXIF & location",
                        "type": "boolean",
                        "description": "When on, each photo is enriched with its tags, camera EXIF, and location (one extra lookup per photo). Turn off for faster, lighter runs when you only need image URLs, dimensions, and photographer attribution.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
