
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape Unsplash photos from keyword searches, collections, topics, photographer profiles and photo URLs. Get image URLs in 5 sizes, photographer details, likes, color and BlurHash, plus optional EXIF, location, views, downloads and tags. Filter by orientation, color and license. No login or API key.
Turn Unsplash into clean, structured photo data. Search by keyword or paste any unsplash.com search, collection, topic, profile or photo URL, and get image URLs in five sizes, photographer details, likes, color and BlurHash. Turn on photo details to add camera EXIF, location, views, downloads and tags. No login, no API key, no developer app. 1,000 photos take about 12 seconds.
raw, full, regular (1080 px), small (400 px) and thumb (200 px) URLs plus the download link.@profile or photo pages).| Field | Description |
|---|---|
queries | Search keywords. Each keyword runs as its own search. |
startUrls | unsplash.com URLs: /s/photos/{term}, /collections/{id}, /t/{slug}, /@{username}, /photos/{slug}. Localized URLs work. |
maxItems | Maximum photos across all inputs (default 20, 0 = no limit). |
orientation | any, landscape, portrait, squarish (searches). |
color | any, black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue (searches). |
orderBy | relevant or latest (searches). |
license | free (default), plus (Unsplash+ only) or all. |
includePhotoDetails | Add EXIF, location, views, downloads, tags and topics. |
{
"queries": ["nature", "coffee shop"],
"startUrls": [
"https://unsplash.com/t/architecture-interior",
"https://unsplash.com/collections/1065976/coffee"
],
"maxItems": 200,
"orientation": "landscape",
"license": "free",
"includePhotoDetails": true
}
One row per photo.
| Field | Description |
|---|---|
photoId, slug, photoUrl | Photo ID, slug and page URL |
description, altDescription | Caption and alt text |
width, height, color, blurHash | Size in pixels, dominant color and BlurHash placeholder |
likes, createdAt, updatedAt, promotedAt | Likes and dates |
assetType, premium, plus, sponsored | Photo or illustration, Unsplash+ and sponsorship flags |
urls.raw/full/regular/small/thumb, downloadUrl | Image URLs in five sizes and the download link |
photographer.* | ID, username, name, bio, location, profile URL, portfolio, Instagram, Twitter, for hire, photo/like/collection counts, avatar |
views, downloads, publicDomain | With photo details |
exif.* | Make, model, exposure time, aperture, focal length, ISO (with photo details) |
location.* | Name, city, country, latitude, longitude (with photo details) |
tags, topics | Tag and topic titles (with photo details) |
source | Which keyword or URL produced the row |
scrapedAt | When the row was saved |
Example (sample data, trimmed):
{
"photoId": "aB3dE5fG7hJ",
"slug": "misty-pine-forest-at-sunrise-aB3dE5fG7hJ",
"photoUrl": "https://unsplash.com/photos/misty-pine-forest-at-sunrise-aB3dE5fG7hJ",
"description": null,
"altDescription": "misty pine forest at sunrise",
"width": 6000,
"height": 4000,
"color": "#40594c",
"blurHash": "L46kVC00?b~qt7WBfQay00%M9Fxu",
"likes": 1284,
"createdAt": "2024-03-18T07:12:44Z",
"assetType": "photo",
"premium": false,
"plus": false,
"sponsored": false,
"urls": {
"raw": "https://images.unsplash.com/photo-1710000000000-abcdef123456?ixlib=rb-4.1.0",
"full": "https://images.unsplash.com/photo-1710000000000-abcdef123456?q=85&fm=jpg",
"regular": "https://images.unsplash.com/photo-1710000000000-abcdef123456?w=1080",
"small": "https://images.unsplash.com/photo-1710000000000-abcdef123456?w=400",
"thumb": "https://images.unsplash.com/photo-1710000000000-abcdef123456?w=200"
},
"downloadUrl": "https://unsplash.com/photos/aB3dE5fG7hJ/download",
"photographer": {
"username": "sample_photographer",
"name": "Sample Photographer",
"location": "Bergen, Norway",
"profileUrl": "https://unsplash.com/@sample_photographer",
"portfolioUrl": "https://example.com",
"instagram": "sample.photographer",
"forHire": true,
"totalPhotos": 312,
"totalLikes": 95
},
"detailsIncluded": true,
"views": 2457810,
"downloads": 18342,
"exif": {"make": "SONY", "model": "ILCE-7M3", "exposureTime": "1/250", "aperture": "4.0", "focalLength": "35.0", "iso": 200},
"location": {"name": "Bergen, Norway", "city": "Bergen", "country": "Norway", "latitude": 60.39299, "longitude": 5.32415},
"tags": ["forest", "fog", "pine", "sunrise", "nature"],
"topics": ["Nature"],
"source": {"type": "search", "query": "nature", "url": "https://unsplash.com/s/photos/nature"},
"scrapedAt": "2026-10-15T08:00:00Z"
}
You pay $1.00 per 1,000 photos ($0.001 per photo), with or without photo details. Platform usage (compute and proxy traffic) is billed on top and is tiny: a typical 1,000-photo run uses well under a cent of it. Example: 1,000 photos ≈ $1.01 in total. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.
Is it legal to scrape Unsplash? The scraper only reads public pages that anyone can open without an account. Photos are covered by the Unsplash License or, for Unsplash+, a paid license; check the license and attribution rules before you reuse images.
Do I need an Unsplash account, API key or proxy? No. There is no login and no API key. The default datacenter proxy works and is the cheapest option.
How many photos can I get? Collections, topics and profiles return every photo they contain. A single search stops after about 200 pages on Unsplash's side; when you ask for more, the scraper also walks the same search sorted the other way, which gave about 6,300 unique photos for "nature" in our tests. Add more keywords for more photos. The run ends with a message when a search runs out.
Why are some fields empty?
views, downloads, exif, location, tags and topics need photo details turned on. Even then, many photographers don't share EXIF or location, so those stay null.
What are Unsplash+ photos?
Paid photos that are watermarked without an Unsplash+ subscription. They are skipped by default; set License to plus or all to include them. Photos you request by URL are always returned.
Can I schedule runs or use the API? Yes. Schedule the scraper to watch a collection or keyword, or call it from the API and read the dataset as JSON or CSV.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayOptionalSearch keywords
Each keyword runs as its own Unsplash photo search, e.g. `nature`, `coffee shop`, `minimal workspace`.
startUrlsarrayOptionalUnsplash URLs
unsplash.com URLs: search (`/s/photos/{term}`), collection (`/collections/{id}`), topic (`/t/{slug}`), photographer profile (`/@{username}`) or single photo (`/photos/{slug}`). Localized URLs such as `/de/fotos/...` work too.
maxItemsintegerOptionaldefault 20Maximum photos
Maximum number of photos saved across all keywords and URLs. 0 means no limit.
Applied to keyword searches and search URLs. License also applies to collections, topics and profiles.
orientationenumOptionaldefault "any"Orientation
Only return photos with this orientation.
colorenumOptionaldefault "any"Color
Only return photos with this color tone.
orderByenumOptionaldefault "relevant"Sort by
Order search results by relevance or newest first.
licenseenumOptionaldefault "free"License
Free photos (Unsplash License), only Unsplash+ (paid, watermarked without a subscription), or both.
includePhotoDetailsbooleanOptionaldefault falseInclude photo details
Adds camera EXIF (make, model, aperture, shutter, focal length, ISO), location with coordinates, views, downloads, tags and topics. One extra request per photo, so runs take a little longer. Single photo URLs always include details.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Unsplash and are the cheapest option.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| photoId | string | Unsplash photo ID |
| photoUrl | string | Photo page URL |
| likes | number | null | |
| width | number | null | |
| height | number | null | |
| urls | object | Image URLs in 5 sizes |
| photographer | object | |
| source | object | Which input produced this photo |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Photo | One saved Unsplash photo (with EXIF, location, views and downloads when photo details are on). | $0.001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/unsplash-scraper').call({
"queries": [
"nature"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/unsplash-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/unsplash-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Photos from a photographer page and the architecture topic.
Latest landscape photos with camera details.
Photos from an Unsplash collection.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.