Unsplash Image Scraper avatar

Unsplash Image Scraper

Pricing

from $2.65 / 1,000 unsplash images

Go to Apify Store
Unsplash Image Scraper

Unsplash Image Scraper

Scrape Unsplash image search results by keyword. Export image URLs, source ranks, query metadata, and scrape timestamps for design, SEO, and content research.

Pricing

from $2.65 / 1,000 unsplash images

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

🖼️ Unsplash image scraper for keyword searches

Unsplash Image Scraper collects image results from Unsplash search pages. Enter one or more keywords such as nature, coffee shop, or minimal workspace, then export image URLs, source rank, query metadata, and scrape timestamps from a clean Apify dataset.

Use this Unsplash image scraper when you need a repeatable way to collect image search results for design research, creative briefs, mood boards, SEO image research, content planning, or internal data workflows. You can run it in Apify Console, schedule repeat runs, call it from the Apify API, and export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.

The Actor is built for public Unsplash search results. It does not download binary image files, generate images, enrich photographer contacts, or combine Unsplash with other image sources.

✅ What this Actor does

  • Searches Unsplash by one or more keywords.
  • Saves one dataset item per discovered image result.
  • Keeps the original search query and rank on every item.
  • Returns common image URL variants: raw, full, regular, small, and thumb.
  • Supports Unsplash search sorting by relevance or latest.
  • Supports orientation and color filters when Unsplash returns matching search results.
  • Adds source URL and scrape time fields for traceable exports.
  • Stops at your per-query and total image limits.

Some fields are nullable because Unsplash search HTML does not expose every piece of photo metadata on every result. When a value is not available from the public search result, the Actor keeps the field as null or an empty array instead of inventing data.

📦 Data you can extract

Each output item represents one Unsplash image result. Fields include:

  • query and queryIndex
  • rank
  • imageId
  • title, description, and altDescription when available
  • createdAt and updatedAt when available
  • width and height when available
  • urls.raw, urls.full, urls.regular, urls.small, and urls.thumb
  • links.html, links.download, and links.downloadLocation when available
  • photographer identity fields when available
  • tags
  • engagement.likes and engagement.downloads when available
  • color and blurHash when available
  • sourceUrl, unsplashUrl, downloadLocationUrl, and scrapedAt

🚀 How to run

  1. Add one or more Unsplash search terms.
  2. Keep Image limit per search at 25 for a quick first run.
  3. Optionally choose sort order, orientation, or color.
  4. Run the Actor.
  5. Open the dataset or export the results through the Apify API.

For a small test, use the prefilled nature query. For larger research jobs, add several related search terms and use Total image limit to cap the whole run.

⚙️ Input

{
"queries": ["nature", "minimal workspace"],
"maxItemsPerQuery": 25,
"maxTotalItems": 100,
"sortBy": "relevance",
"orientation": "any",
"color": "any"
}

Search terms

Enter plain Unsplash search keywords. Short, visual terms usually work best, for example:

  • nature
  • coffee shop
  • minimal workspace
  • SaaS dashboard
  • running shoes

Each query is searched separately. Duplicate and empty values are ignored.

Limits and filters

Use maxItemsPerQuery to control how many images can be saved for each keyword. Use maxTotalItems when you want a hard cap across the full run.

sortBy can be relevance or latest. orientation can be any, landscape, portrait, or squarish. color can be any or one of the supported Unsplash color filters.

📊 Output example

{
"query": "nature",
"queryIndex": 0,
"rank": 1,
"imageId": "photo-1470071459604-3b5ec3a7fe05",
"title": null,
"description": null,
"altDescription": null,
"createdAt": null,
"updatedAt": null,
"width": null,
"height": null,
"urls": {
"raw": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format",
"full": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&q=85&w=2000",
"regular": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&q=80&w=1080",
"small": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&q=80&w=400",
"thumb": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&q=80&w=200"
},
"links": {
"html": null,
"download": "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?auto=format&fit=crop&q=85&w=2000",
"downloadLocation": null
},
"photographer": {
"id": null,
"username": null,
"name": null,
"profileUrl": null,
"portfolioUrl": null
},
"tags": [],
"engagement": {
"likes": null,
"downloads": null
},
"color": null,
"blurHash": null,
"sourceUrl": "https://unsplash.com/s/photos/nature?page=1&order_by=relevant",
"unsplashUrl": null,
"downloadLocationUrl": null,
"scrapedAt": "2026-05-23T00:00:00.000Z"
}

💳 Pricing

This Actor uses pay-per-event pricing. You pay a small Actor-start charge when a run begins and one image charge for each saved Unsplash image item.

Use the input limits to control cost before you start a larger run. If no images are saved, no per-image charge is made.

⚠️ Limits and caveats

  • Results depend on what Unsplash returns for the public search page at run time.
  • Some metadata fields can be null because public search results do not always expose them.
  • The Actor returns image URLs, not downloaded image files.
  • It does not provide legal advice about how you may use an image. Review Unsplash and image-owner terms for your use case.
  • It is not an official Unsplash API client.

❓ FAQ

Does this Actor download image files?

No. It returns image URLs in several common sizes. Use those URLs in your own workflow if you need to fetch files separately.

Do I need an Unsplash API key?

No. The Actor is designed for public Unsplash search pages and does not ask for an Unsplash API key, cookies, or login details.

Why are some fields null?

Unsplash search pages expose image assets reliably, but not every detail is present in the public search result. The Actor keeps unavailable fields as null or [] so exports stay honest and schema-stable.

Can I schedule repeat image searches?

Yes. You can schedule the Actor on Apify and compare datasets over time, subject to the same public search result availability.

📝 Changelog

  • 0.1: Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

🔗 Other actors

Made with ❤️ by Maxime Dupré