Pexels Scraper | Photos, Videos and Download Stats avatar

Pexels Scraper | Photos, Videos and Download Stats

Pricing

from $0.99 / 1,000 photos

Go to Apify Store
Pexels Scraper | Photos, Videos and Download Stats

Pexels Scraper | Photos, Videos and Download Stats

Pexels scraper for free stock photos and videos: 20 photos in 7 seconds, 48 fields each, from a keyword, a Pexels link or an id. Get title, tags, photographer, size, colors, views, downloads, likes, camera data, place, dates and download links, with orientation and color filters. No API key.

Pricing

from $0.99 / 1,000 photos

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

6 days ago

Last modified

Share

Pexels Scraper | Stock Photos, Videos, Views and Downloads (2026)

1 search. 20 Pexels photos. 48 fields per photo.

From SilentFlow. Creators of Pinterest Scraper (#1 for โ€œpinterest pins scraperโ€ in Apify Store search) and Leboncoin Scraper Ppe, with 250,000+ combined lifetime runs.

Every Pexels photo and video you need, as a table: title, description, tags, photographer, size, colors, views, downloads, likes, camera settings, place and download links. Type a keyword, paste a Pexels link or drop in photo ids, and get rows you can sort, filter and feed to a model or a media library. 20 coffee photos with all their data in 5 seconds on the prefilled run, no Pexels account and no API key.

Why choose this actor?

Saving Pexels images one by one and typing their captions into a spreadsheet? Guessing which photos people actually download, because the search page shows no numbers? Running one search mode at a time, then stitching keywords, collections and portfolios together by hand?

  • 46 fields filled on a typical row, against the 20 the most used Pexels scraper shows. On a measured run of 100 coffee photos (5 Oct 2026), 46 of the 57 fields of a row carry a value on at least half of the rows: views, downloads and likes, the camera and its maker, aperture, focal length, ISO and shutter speed, file size, the date the photo was taken, content ratings, 4 image sizes and the original file, the photographer's profile, location, avatar and Instagram, and 40 tags per photo on average. The output example of the most used Pexels scraper has 20 keys and no views, downloads, likes or camera data.
  • Keywords, Pexels links and ids, all in the same run. The most used Pexels scraper makes you pick one mode per run. Here you can type keywords, paste search pages with their filters, photo and video pages, photographer profiles and collections, and list photo or video ids, together, with duplicates removed across all of them. On a test run, 2 ids plus 1 filtered search link returned 14 rows in 4 seconds; a photographer link plus a collection link returned 40 rows in 9 seconds.
  • Nothing to fill in before you press Start. The most used Pexels scraper makes its mode field mandatory. Here no field is required: any keyword, link or id is enough, and the form comes prefilled with coffee, so the first run returns 20 photos with their full data right away.

Try Pexels Scraper

Paste this input into the Input tab (JSON view) and press Start. It is the prefilled input of the form: 20 coffee photos from Pexels, any orientation, any size, with views, downloads, likes and camera data.

{
"searchQueries": ["coffee"],
"mediaType": "photos",
"maxItems": 20,
"orientation": "any",
"size": "any",
"includeDetails": true
}

The Apify Free plan is enough to run it and to try the actor on your own topics: no credit card, no Pexels account, no API key, no setup. Each photo or video becomes one row of the dataset, which you can export as JSON, CSV or Excel, open in Google Sheets, or read from the API.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full context of this actor:

You have access to the Pexels Scraper on Apify: silentflow/pexels-scraper
It reads pexels.com, the free stock photo and video site. One dataset row per photo or video.
Input (no field is required, give at least one of the first three):
- searchQueries (array of strings): keywords as typed in the Pexels search bar, e.g. ["coffee", "mountain lake"].
- startUrls (array of {url}): pexels.com links. Search pages keep their filters
(https://www.pexels.com/search/coffee/?orientation=landscape&color=red), photo and video pages give one row
(https://www.pexels.com/photo/coffee-cup-27860686/), photographer profiles give their portfolio
(https://www.pexels.com/@ekaterina-bolovtsova/), collections give their media
(https://www.pexels.com/collections/aquatic-aesthetic-bw7dkse/). images.pexels.com file links work too.
- mediaIds (array of strings): photo or video ids, the number at the end of a Pexels page, e.g. "27860686".
- mediaType (string, default "photos"): "photos", "videos" or "all". Applies to keywords, profiles and collections.
- maxItems (integer, default 100): cap per keyword, search link, profile or collection. Ids are always read in full.
- orientation (string, default "any"): "any", "landscape", "portrait" or "square". Applies to keywords.
- size (string, default "any"): "any", "large" (24 MP, 4K), "medium" (12 MP, Full HD) or "small" (4 MP, HD).
- color (string): a Pexels color (red, orange, yellow, green, turquoise, blue, violet, pink, brown, black, gray, white) or a hex code such as "#2563eb".
- includeDetails (boolean, default true): add views, downloads, likes and, for photos, camera data, file size, place and content ratings.
Output per row (57 fields, null when Pexels has no value):
- id (string), url (string), mediaType ("photo" or "video"), title (string), slug (string)
- description (string), tags (array of strings), license (string), licenseUrl (string)
- photographer (string), photographerId (string), photographerUsername (string), photographerUrl (string),
photographerLocation (string), photographerAvatarUrl (string), photographerInstagram (string),
photographerTwitter (string), photographerDonateUrl (string), photographerIsHero (boolean)
- width (integer), height (integer), aspectRatio (number), orientation ("landscape", "portrait" or "square"),
duration (integer seconds, videos), fps (number, videos), fileSize (integer bytes, photos)
- views (integer), downloads (integer), likes (integer)
- mainColor (hex string), colors (array of hex strings), photos only
- camera (string), cameraMake (string), aperture (number, f-stop), focalLength (number, mm), iso (integer),
shutterSpeed (string such as "1/60s"), software (string)
- location (string), latitude (number), longitude (number)
- photographedAt, createdAt, publishedAt, updatedAt (RFC 3339 UTC strings)
- contentSafety (object: adult, racy, violence, medical, spoof, from "very_unlikely" to "very_likely")
- imageUrl (original file), imageLargeUrl, imageMediumUrl, imageSmallUrl, downloadUrl (strings)
- videoUrl (largest file), videoPreviewUrl (string), videoFiles (array of {quality, width, height, fps, fileType, url, downloadUrl})
- foundBy ("keyword", "url" or "id"), searchQuery (string), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript: client.actor("silentflow/pexels-scraper").call(run_input=...).

How to scrape Pexels photos and videos

Get 100 coffee photos with their views and downloads

The simplest run: one keyword, a cap, and every row comes with its stats and camera data. On our test run, 100 coffee photos took 22 seconds.

{
"searchQueries": ["coffee"],
"maxItems": 100
}

Pull landscape videos of a place for a video edit

Switch the media type to videos and keep only horizontal clips. Each row carries the duration, the frame rate, the largest file link and every rendition (4K, Full HD, HD, SD). On our test run, 15 landscape mountain lake videos took 2 seconds.

{
"searchQueries": ["mountain lake"],
"mediaType": "videos",
"orientation": "landscape",
"maxItems": 15
}

Collect on-brand portrait photos in your brand color

Combine orientation, minimum size and a hex color to fill a story or a mobile banner with photos that already match your palette.

{
"searchQueries": ["office team", "remote work"],
"orientation": "portrait",
"size": "large",
"color": "#2563eb",
"maxItems": 50
}

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsprefilled ["coffee"]Keywords as typed in the Pexels search bar. Each one is its own search.
startUrlsarray of linksnonePexels search pages, photo and video pages, photographer profiles, collections, image file links.
mediaIdsarray of stringsnonePhoto or video ids. One row each.
mediaTypeselectphotosphotos, videos or all (both in turn). Applies to keywords, profiles and collections.
maxItemsinteger100 (prefill 20)Cap per keyword, search link, profile or collection.
orientationselectanylandscape, portrait or square. Applies to keywords.
sizeselectanyMinimum resolution: large (24 MP, 4K), medium (12 MP, Full HD), small (4 MP, HD).
colorselect or textnoneOne of the 12 Pexels colors, or any hex code.
includeDetailsbooleantrueViews, downloads, likes, camera data, file size, place and content ratings.

Accepted formats

  • Keywords: any words, in any language Pexels understands: coffee, mountain lake, cafรฉ, business meeting.
  • Search pages: https://www.pexels.com/search/coffee/, https://www.pexels.com/search/videos/city%20night/, with the orientation, size and color filters of the page kept.
  • Photo and video pages: https://www.pexels.com/photo/coffee-cup-27860686/, https://www.pexels.com/video/man-holding-a-cup-of-coffee-6343885/, with or without a language prefix such as /fr-fr/.
  • Image and video files: https://images.pexels.com/photos/27860686/pexels-photo-27860686.jpeg and https://videos.pexels.com/video-files/6343885/...mp4 resolve to their photo or video.
  • Photographers: https://www.pexels.com/@ekaterina-bolovtsova/ for the whole portfolio; the media type field picks photos, videos or both.
  • Collections: https://www.pexels.com/collections/aquatic-aesthetic-bw7dkse/ or just the end of it.
  • Ids: 27860686, or a full photo link in the ids field.
  • Colors: red, turquoise, gray (or grey), violet (or purple), #2563eb, 2563eb, #fff.

What data can you extract from Pexels?

Each row is one photo or video, with 57 fields grouped the way you read them. Fields Pexels has no value for are null, never an empty string, so a column means the same thing on every row.

  • Identity (5): id, url, mediaType, title, slug. The id is Pexels' own and never changes; the url is the permanent page of the photo or video.
  • Content (4): description (a full-sentence caption, written for screen readers), tags (40 per photo on average on our coffee run), license and licenseUrl.
  • Photographer (10): name, id, username, profile link, location, avatar, Instagram and X handles, donation link, and whether they are a Pexels Hero.
  • Measures (10): width, height, aspectRatio, orientation, duration and fps for videos, fileSize for photos, and views, downloads, likes.
  • Colors (2): mainColor and the 4 to 5 colors of the palette, as hex codes, for photos.
  • Camera (7): camera, cameraMake, aperture, focalLength, iso, shutterSpeed, software, read from the original file. On our coffee run, 70 photos out of 100 carried their camera.
  • Place and time (7): location (a place name, on 25 photos out of 100 on our coffee run), latitude and longitude when Pexels has them, photographedAt, createdAt, publishedAt, updatedAt, all in RFC 3339 UTC.
  • Content ratings (1 object, 5 values): contentSafety gives the likelihood that a photo is adult, racy, violent, medical or a spoof, from very_unlikely to very_likely.
  • Media (8): imageUrl (the original file), imageLargeUrl (1440 px), imageMediumUrl (750 px), imageSmallUrl (130 px high), downloadUrl, and for videos videoUrl (the largest file), videoPreviewUrl and videoFiles (every rendition with its quality, size, frame rate and links).
  • Run (3): foundBy (keyword, url or id), searchQuery, scrapedAt.

On our coffee run the most viewed photo had 19,433,872 views and the most downloaded 97,652 downloads; the median photo had 92,663 views.

Output example

One real row from a run on 5 Oct 2026 (keyword coffee):

{
"id": "40016523",
"url": "https://www.pexels.com/photo/warm-evening-coffee-cup-on-table-40016523/",
"mediaType": "photo",
"title": "Warm Evening Coffee Cup on Table",
"slug": "warm-evening-coffee-cup-on-table",
"description": "A warm coffee cup on a table, creating a cozy evening ambiance.",
"tags": ["and cafe culture", "beverage", "blurred background", "bokeh", "break", "brown", "cafรฉ", "coffee", "cozy", "cup", "disposable cup", "douce ambiance", "drink", "evening", "hot drink", "leisure", "night", "orange cup", "relaxation", "soft lighting", "stylish coffee cup", "table", "takeaway", "warm"],
"license": "Pexels",
"licenseUrl": "https://www.pexels.com/license/",
"photographer": "mohammad mohebbi",
"photographerId": "69812696",
"photographerUsername": "SLYTONIC",
"photographerUrl": "https://www.pexels.com/@slytonic/",
"photographerLocation": "iran",
"photographerAvatarUrl": "https://images.pexels.com/users/avatars/69812696/mohammad-mohebbi-714.jpeg?auto=compress&fit=crop&h=256&w=256",
"photographerInstagram": "_slytonic_art_",
"photographerTwitter": "say_me_mad",
"photographerDonateUrl": null,
"photographerIsHero": true,
"width": 3456,
"height": 5184,
"aspectRatio": 0.6667,
"orientation": "portrait",
"duration": null,
"fps": null,
"fileSize": 5209515,
"views": 100,
"downloads": 3,
"likes": 0,
"mainColor": "#312114",
"colors": ["#0a0702", "#584632", "#b7a290", "#c86133"],
"camera": "Canon EOS 600D",
"cameraMake": "Canon",
"aperture": 2.8,
"focalLength": 50,
"iso": 100,
"shutterSpeed": "1/60s",
"software": "Adobe Photoshop CC 2015.5 Windows",
"location": "Kermanshah, Kermanshah Province, Iran",
"latitude": null,
"longitude": null,
"photographedAt": "2026-09-30T23:36:15Z",
"createdAt": "2026-10-03T21:01:35Z",
"publishedAt": "2026-10-04T09:00:38Z",
"updatedAt": "2026-10-04T08:33:38Z",
"contentSafety": {
"adult": "very_unlikely",
"racy": "unlikely",
"violence": "unlikely",
"medical": "unlikely",
"spoof": "very_unlikely"
},
"imageUrl": "https://images.pexels.com/photos/40016523/pexels-photo-40016523.jpeg",
"imageLargeUrl": "https://images.pexels.com/photos/40016523/pexels-photo-40016523.jpeg?auto=compress&cs=tinysrgb&w=1440",
"imageMediumUrl": "https://images.pexels.com/photos/40016523/pexels-photo-40016523.jpeg?auto=compress&cs=tinysrgb&w=750",
"imageSmallUrl": "https://images.pexels.com/photos/40016523/pexels-photo-40016523.jpeg?auto=compress&cs=tinysrgb&h=130",
"downloadUrl": "https://images.pexels.com/photos/40016523/pexels-photo-40016523.jpeg?cs=srgb&dl=pexels-slytonic-40016523.jpg&fm=jpg",
"videoUrl": null,
"videoPreviewUrl": null,
"videoFiles": null,
"foundBy": "keyword",
"searchQuery": "coffee",
"scrapedAt": "2026-10-05T09:28:05Z"
}

A video row fills duration, fps, videoUrl, videoPreviewUrl and videoFiles instead of the palette and camera fields. From the same day, Aerial Footage of a Lake (id 10027098): 23 seconds at 25 frames per second, 3840 x 2160, 284,950 views, 2,006 downloads, 49 likes, with its 4K file first in videoFiles.

Advanced usage

Build a large image dataset on one topic

Pexels shows at most 480 results for one search. When you ask for more and leave orientation and size open, the run keeps going through landscape, portrait and square results and through each size, and only keeps photos it has not delivered yet. On our test run, 1,000 unique coffee photos took 48 seconds with the extra data turned off. Turn includeDetails back on when you need the stats and camera fields; the run takes longer, since each photo then gets its own lookups (100 photos in 22 seconds on our run).

{
"searchQueries": ["coffee"],
"maxItems": 1000,
"includeDetails": false
}

Archive a photographer's whole portfolio with its stats

Paste a profile to get every photo and video of a photographer, with views, downloads and likes per work. Set the media type to photos or videos to take one kind only, and raise maxItems to the size of the portfolio.

{
"startUrls": [{ "url": "https://www.pexels.com/@ekaterina-bolovtsova/" }],
"mediaType": "all",
"maxItems": 500
}

Mirror a curated collection into your media library

Collections are hand-picked sets around a theme. Point the run at one and send the rows to your library or your DAM with their original files, captions and tags. The media type you pick decides whether videos of the collection come along.

{
"startUrls": [{ "url": "https://www.pexels.com/collections/aquatic-aesthetic-bw7dkse/" }],
"mediaType": "all",
"maxItems": 100
}

Track the views and downloads of a watchlist every week

List the photos and videos you follow (yours, a competitor's, the ones your campaigns use) and schedule the run weekly from the Schedules tab. Each run gives their current views, downloads and likes, so you can chart how they grow.

{
"mediaIds": ["27860686", "6343885", "40016523"]
}

Replay a search you built on pexels.com

Set your filters on the Pexels search page, copy the address and paste it: the keyword, the media type, the orientation, the size and the color of the page are all kept. Mix it with keywords and ids in the same run; a photo found twice is delivered once.

{
"startUrls": [{ "url": "https://www.pexels.com/search/office/?orientation=portrait&color=blue" }],
"mediaIds": ["27860686"],
"searchQueries": ["coworking"],
"maxItems": 12
}

FAQ

What is Pexels? Pexels is one of the largest free stock photo and video sites, a Canva company, where photographers and filmmakers publish work anyone can use under the Pexels license. It sits next to Unsplash and Pixabay as a go-to source of free visuals for websites, ads, social posts and AI training sets.

Do I need a Pexels account or a Pexels API key? No. The actor reads the public Pexels pages and data the site shows any visitor. You only need an Apify account, and the Free plan is enough to start.

What does one row contain? One photo or video with up to 57 fields: identity, caption and tags, photographer, size and orientation, views, downloads and likes, colors, camera settings, place and dates, content ratings, and links to every image size and video file. On our 100-photo coffee run, 46 of those fields were filled on at least half of the rows.

How many results can I get for one keyword? Pexels shows up to 480 results per search. Past that, the run walks the orientations and sizes you left open and keeps only new photos: 1,000 unique coffee photos on our test run. How far it goes depends on the keyword; a niche keyword runs out sooner, and the log tells you when a keyword has nothing more.

Can I mix keywords, links and ids in one run? Yes. Ids and links to single photos are read first, then search pages, profiles and collections, then keywords. A photo met twice is delivered once, and maxItems applies to each keyword or link on its own.

Can I get videos? Yes. Set the media type to videos, or to all for photos and videos in turn, or paste video pages and video searches. Video rows carry the duration, the frame rate, the largest file and the full list of renditions with their quality, resolution and links.

How do the filters combine? They stack, as on the Pexels search page. orientation: portrait with size: large and color: #2563eb returns tall photos of 24 megapixels or more whose palette is close to that blue. Filters apply to keywords; a search link keeps the filters it was copied with.

Why are camera or place fields empty on some photos? They come from the original file and from the photographer. Phones and editing tools often strip them: on our coffee run, 70 photos out of 100 had their camera and 25 out of 100 a place name. When Pexels has no value, the field is null.

How fresh is the data? Live. Every run reads Pexels at the moment it runs, so views, downloads and likes are those of that day. Schedule the run to follow how they change.

Are the image and video links permanent? The url of a photo or video is its permanent Pexels page. The image and video links point to Pexels' own file servers and keep working as long as the photo or video stays online on Pexels. Keep the id to look a photo up again later.

Can I use the photos commercially? The Pexels license allows free use, including commercial use, without attribution, and lets you edit the photos. It does not allow selling unaltered copies, redistributing them on other stock sites, or implying that people in a photo endorse your product. Each row links the license in licenseUrl; read it before you publish.

A photographer or collection link returned nothing. Why? The profile or collection may have been removed or made private, or it may hold only the other media type: a portfolio of videos returns nothing with the media type set to photos. The run ends with a message that says which link had nothing.

Can I run it from my code or an AI agent? Yes. Call silentflow/pexels-scraper with the Apify API, the Python or JavaScript client, or any MCP-ready agent, with the input shown above. Paste the block of the Copy to your AI assistant section into your assistant to give it the whole schema.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This actor extracts publicly available data from pexels.com: the photos and videos, their captions and statistics, and the public profiles of the people who published them. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Pexels' terms of service, the Pexels license for any image or video they use, and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Rows name photographers and link their public social profiles, which is personal data: handle it accordingly, and do not use it for unsolicited contact. The data returned is informational; verify accuracy for regulated use cases.

Pexels Scraper by SilentFlow: Pexels photos and videos as a dataset, with the numbers and camera data behind them.