Pexels Stock Media Scraper

Scrape free stock photos and videos from Pexels. Search by keyword, browse curated/popular media, a photographer's portfolio, or a curated collection. Get direct image and video file URLs, photographer credit, tags, colors, and more.

Open in Apify Store$0.99 / 1K on Free

Short answer

Pexels Stock Media Scraper is an Apify Store Actor for Pexels data that returns 13 published output fields, including title, photographerName, width, height. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 25 input settings; one is required (mode). It covers 5 of the 8 core Pexels fields this site tracks. Last updated Nov 5, 2026.

From the public Store listing and published build schema, synced 2026-11-12.
Pexels AutomationDeveloper toolsVideo

What it returns

13 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.

  • recordType
  • photoId
  • videoId
  • title
  • photographerName
  • width
  • height
  • orientation
  • durationSeconds
  • license
  • attribution
  • downloadUrl
  • pageUrl

Not in the schema among the core Pexels fields: photo, video, page. The field matrix shows which other tools return them.

Input

Input settings for Pexels Stock Media Scraper
SettingTypeRequiredDefaultWhat it does
mode string Yes search What to fetch from Pexels. Use Search by keyword for discovery, Look up media by ID/URL for exact assets, Photographer portfolio or Collection for a catalog, Similar media for related assets, Curated feed for Pexels' editorial selection, or Paste URLs to route any Pexels link automatically.
searchQueries array No [] One or more keywords for mode=search, one per line. Each query is searched separately and duplicates are removed. Example: `nature`, `city skyline`, `coffee`.
mediaType string No photos Photos, videos, or both. `all` searches photos and videos and merges the results. Exact ID/URL lookups return the requested media type regardless of this setting.
startUrls array No [] Pexels search, photo, video, photographer, collection, image-file, or video-file URLs for mode=byUrl. Search URLs keep their orientation, size, color, people, and page filters.
orientation string No all Filter by media orientation. Applies to search, profile, and collection modes.
size string No all Pexels minimum-size filter. Photos: large is 24 MP, medium is 12 MP, small is 4 MP. Videos: large is 4K, medium is Full HD, small is HD.
color string No all Filter photos by dominant color. Use Color hex instead for an exact hex value. Photos only.
colorHex string No – Optional hex color such as `#2563eb` or `#fff`. Overrides the Color dropdown when set. Photos only.
peopleCount string No all Filter by how many people appear in the media. Applies to photos and videos.
peopleAge string No all Filter by the age of people in the media. Applies to photos and videos.
Show the other 15 settings
More input settings for Pexels Stock Media Scraper
SettingTypeRequiredDefaultWhat it does
locale string No en-US Pexels locale for titles, descriptions, and search results. Search terms are used as typed.
minWidth integer No 0 Only return media at least this wide. 0 disables the filter. Enforced on each returned record.
minHeight integer No 0 Only return media at least this tall. 0 disables the filter. Enforced on each returned record.
minFps integer No 0 Only return videos with at least this many frames per second (for example 60). 0 disables the filter. Photos always pass.
minDuration integer No 0 Only return videos at least this many seconds long. 0 disables the filter.
maxDuration integer No 0 Only return videos at most this many seconds long. 0 disables the filter.
publishedAfter string No – Optional YYYY-MM-DD date. Only return media published on or after this date. Applied to the records returned by the current search/all listing.
publishedBefore string No – Optional YYYY-MM-DD date. Only return media published on or before this date. Applied to the records returned by the current search/all listing.
mediaIds array No [] Pexels photo or video IDs, or full photo/video/image-file URLs. Used by Look up media by ID/URL and Similar media modes.
username string No – Pexels photographer handle, ID, or profile URL for mode=byUser. Example: `alex-ivanov-773258579` or `https://www.pexels.com/@alex-ivanov-773258579/`.
collectionSlug string No – Pexels collection slug or full collection URL for mode=byCollection. Example: `aquatic-aesthetic-bw7dkse`.
maxItems integer No 30 Maximum number of media records to return across all queries, IDs, and URLs. Pexels search serves at most about 480 records per query (20 pages of 24); a single search query cannot exceed that even with a higher value.
includeDetails boolean No false Open each media's detail page to add views, downloads, likes, camera/EXIF data, and the photographer's full profile. Adds one request per item and can be slow on large runs. Mode=byMediaId always enriches.
dedupe boolean No true Keep only the first occurrence of each photo or video across queries, IDs, and URLs.
proxyConfiguration object No {"useApifyProxy":false} Optional Apify proxy override. The actor works directly without a proxy and escalates automatically only if Pexels blocks the run.

Example input

Built from the input form's published example values and defaults.

{
  "mode": "search",
  "searchQueries": [
    "nature"
  ],
  "mediaType": "photos",
  "startUrls": [],
  "orientation": "all",
  "size": "all",
  "color": "all",
  "peopleCount": "all",
  "peopleAge": "all",
  "locale": "en-US",
  "minWidth": 0,
  "minHeight": 0,
  "minFps": 0,
  "minDuration": 0,
  "maxDuration": 0,
  "mediaIds": [
    "18872916"
  ],
  "username": "alex-ivanov-773258579",
  "collectionSlug": "aquatic-aesthetic-bw7dkse",
  "maxItems": 3,
  "includeDetails": false,
  "dedupe": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Run it from code or an AI agent

The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "mode": "search",
    "searchQueries": [
        "nature"
    ],
    "mediaType": "photos",
    "startUrls": [],
    "orientation": "all",
    "size": "all",
    "color": "all",
    "peopleCount": "all",
    "peopleAge": "all",
    "locale": "en-US",
    "minWidth": 0,
    "minHeight": 0,
    "minFps": 0,
    "minDuration": 0,
    "maxDuration": 0,
    "mediaIds": [
        "18872916"
    ],
    "username": "alex-ivanov-773258579",
    "collectionSlug": "aquatic-aesthetic-bw7dkse",
    "maxItems": 3,
    "includeDetails": False,
    "dedupe": True,
    "proxyConfiguration": {
        "useApifyProxy": False
    }
}

run = client.actor("nimbryxo-studio/pexels-stock-media-scraper-2").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "mode": "search",
    "searchQueries": [
        "nature"
    ],
    "mediaType": "photos",
    "startUrls": [],
    "orientation": "all",
    "size": "all",
    "color": "all",
    "peopleCount": "all",
    "peopleAge": "all",
    "locale": "en-US",
    "minWidth": 0,
    "minHeight": 0,
    "minFps": 0,
    "minDuration": 0,
    "maxDuration": 0,
    "mediaIds": [
        "18872916"
    ],
    "username": "alex-ivanov-773258579",
    "collectionSlug": "aquatic-aesthetic-bw7dkse",
    "maxItems": 3,
    "includeDetails": false,
    "dedupe": true,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

const run = await client.actor("nimbryxo-studio/pexels-stock-media-scraper-2").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~pexels-stock-media-scraper-2/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"mode":"search","searchQueries":["nature"],"mediaType":"photos","startUrls":[],"orientation":"all","size":"all","color":"all","peopleCount":"all","peopleAge":"all","locale":"en-US","minWidth":0,"minHeight":0,"minFps":0,"minDuration":0,"maxDuration":0,"mediaIds":["18872916"],"username":"alex-ivanov-773258579","collectionSlug":"aquatic-aesthetic-bw7dkse","maxItems":3,"includeDetails":false,"dedupe":true,"proxyConfiguration":{"useApifyProxy":false}}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=nimbryxo-studio/pexels-stock-media-scraper-2",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

What a run costs

The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.

Cost of Pexels Stock Media Scraper results by Apify plan
Apify planPer 1,00010,000 results100,000 results
Free plan$0.99$9.90$99
Starter plan$0.82$8.20$82
Scale plan$0.66$6.60$66
Business plan$0.49$4.90$49
  • Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 1 GB a run starts at $0.10 on Free. Fewer, larger runs keep this small.
  • The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
  • Worked example: 10,000 results in one run on the Free plan cost $10 ($9.90 for results + $0.10 start), plus Apify platform usage (compute), billed separately by Apify.
  • Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.

Where it fits among Pexels routes

It ranks 1 of 1 catalogue Actors for Pexels on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.

Route diagram for Pexels dataPexels Stock Media Scraper: stops at 3 of the 10 fields shown; Other Store tools (7): stops at 8 of the 10 fields shown; Pexels API: public, field coverage not compared.Pexelspagephotovideotitlephotographerwidthdownloadslikesviewsdescription1+API
  • 1 Pexels Stock Media Scraper 13 output fields, pay per event 5 of 8 core fields
    $0.99 / 1K
  • + 7 other Store tools, combined Reference only 6 of 8 core fields
    from $0.90 / 1K
  • API Pexels API Public API fields not compared

Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.

Official route: Pexels API

Public API. The Pexels API searches and returns photos, videos and collections. Apps must show a prominent link to Pexels and credit photographers when possible.

Free; an API key is required.

Official documentation

Other Store tools for Pexels

Reference only, from their public listings.

Other Store tools for Pexels
ToolFieldsPrice / 1K
Pexels Scraper42$1.16
Pexels Scraper11$1.00
Pexels Scraper: Stock Photos & Videos, No API Key39$1.16
Pexels Scraper17$1.16
Pexels Scraper93$0.90

What people use it for

  • search stock media
  • browse photographer portfolios
  • collect media details

Unsplash Photo Search by Topic, Collection & Creator

Searches Unsplash by keyword or browses a curated topic, numbered collection, or photographer's portfolio, returning photo dimensions,…

8 output fields $0.99 per 1K

Google Maps Photo Gallery Extractor by Category

Collect public photos and videos from Google Maps places by URL, Place ID, feature ID, CID or search query. Each row carries the image and video…

42 output fields $0.99 per 1K

Instagram Downloader API - Reels, Video & Photo

Download Instagram photos, videos, Reels and carousel posts from post links or usernames, up to 100 of each per run. Public posts and profiles…

11 output fields $0.49 per 1K

Amazon Creator Storefront & Idea List Scraper

Pull Amazon creator storefronts by handle: profile info and affiliate disclosure, every curated Idea List with its products and prices, and…

11 output fields $0.99 per 1K

YouTube Video Comment & Reply Thread Scraper

Get a YouTube video's comments with nested replies attached, author identity, like counts, and pinned/hearted/verified flags, filterable by…

24 output fields $0.99 per 1K

Google Maps Review & Contributor Activity Scraper

Get reviews for any Google Maps business or place, or switch to author mode to pull everything one Google reviewer has written. Includes ratings,…

96 output fields $0.99 per 1K

Questions people ask

How much does Pexels Stock Media Scraper cost?

The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.

What data does Pexels Stock Media Scraper return?

Its published output schema lists 13 fields: recordType, photoId, videoId, title, photographerName, width, height, orientation, durationSeconds, license, attribution, downloadUrl, and 1 more. A listed field is not guaranteed to be filled in every row.

What input does Pexels Stock Media Scraper need?

Required: mode. Optional settings include searchQueries, mediaType, startUrls, orientation, size, color.

How do I run Pexels Stock Media Scraper from Python or the API?

Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/pexels-stock-media-scraper-2").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/pexels-stock-media-scraper-2").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~pexels-stock-media-scraper-2/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.

Sources

Actor updated 2026-11-05 Data synced 2026-11-12
Cite this page

Scraper Finder. "Pexels Stock Media Scraper." https://scraperfinder.com/catalogue/pexels-stock-media-scraper-2/ (data checked 2026-11-12).

Run Pexels Stock Media Scraper

$0.99 per 1,000 results. Paste the example input above, set your Pexels query, then export the dataset. Still choosing? Compare every Pexels route.

Open in Apify Store