Discover/Unsplash API
live

Unsplash APIunsplash.com

Search Unsplash photos by keyword, orientation, and sort order. Returns image URLs, EXIF data, tags, location, view counts, and photographer profiles.

Endpoint health
verified 6d ago
search_photos
get_photo_details
search_photos_with_tags
3/3 passing latest checkself-healing
Endpoints
3
Updated
26d ago

What is the Unsplash API?

This API exposes 3 endpoints for querying and retrieving Unsplash photo data, returning up to 30 results per page with image URLs at five resolutions, photographer profiles, and metadata including tags, EXIF fields, and location. The search_photos endpoint accepts keyword queries with optional orientation and sort filters, while get_photo_details returns per-photo depth including view counts, download counts, and related collections.

Try it
Page number for pagination (1-based)
Search keyword or theme (e.g., 'nature', 'architecture', 'ocean')
Sort order for results
Number of results per page (max 30)
Filter by photo orientation
api.parse.bot/scraper/d7435d90-1d30-4d76-911f-b0d609c511ae/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/d7435d90-1d30-4d76-911f-b0d609c511ae/search_photos?page=1&query=nature&order_by=relevant&per_page=3&orientation=landscape' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace unsplash-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.unsplash_image_api import Unsplash, Sort, Orientation, PhotoNotFound

unsplash = Unsplash()

# Search for landscape nature photos sorted by relevance
for summary in unsplash.photosummaries.search(query="nature", order_by=Sort.RELEVANT, orientation=Orientation.LANDSCAPE, limit=5):
    print(summary.alt_description, summary.likes, summary.photographer.name)
    print(summary.urls.regular)

    # Navigate to full photo details for the first result
    photo = summary.details()
    print(photo.tags, photo.views, photo.downloads)
    if photo.exif:
        print(photo.exif.make, photo.exif.model)
    break

# Search with tags pre-fetched (enriched results)
for tagged_photo in unsplash.photosummaries.search_with_tags(query="ocean", orientation=Orientation.PORTRAIT, limit=3):
    print(tagged_photo.slug, tagged_photo.tags, tagged_photo.photographer.username)
All endpoints · 3 totalmissing one? ·

Search Unsplash photos by keyword or theme. Returns paginated results with image URLs, dimensions, descriptions, and photographer details. Server-side filtering limited to query, orientation, and sort order. Paginates via page number.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based)
queryrequiredstringSearch keyword or theme (e.g., 'nature', 'architecture', 'ocean')
order_bystringSort order for results
per_pageintegerNumber of results per page (max 30)
orientationstringFilter by photo orientation
Response
{
  "type": "object",
  "fields": {
    "page": "integer — current page number",
    "query": "string — the search query used",
    "photos": "array of photo objects with id, slug, description, urls, photographer, etc.",
    "per_page": "integer — results per page",
    "total_pages": "integer — total pages available",
    "total_results": "integer — total matching photos on Unsplash"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "nature",
      "photos": [
        {
          "id": "fWBZ9r4vO9M",
          "slug": "a-lush-green-forest-filled-with-lots-of-trees-fWBZ9r4vO9M",
          "urls": {
            "raw": "https://plus.unsplash.com/premium_photo-1673292293042-cafd9c8a3ab3?ixid=...",
            "full": "https://plus.unsplash.com/premium_photo-1673292293042-cafd9c8a3ab3?...",
            "small": "https://plus.unsplash.com/premium_photo-1673292293042-cafd9c8a3ab3?...&w=400",
            "thumb": "https://plus.unsplash.com/premium_photo-1673292293042-cafd9c8a3ab3?...&w=200",
            "regular": "https://plus.unsplash.com/premium_photo-1673292293042-cafd9c8a3ab3?...&w=1080"
          },
          "color": "#EFEFEF",
          "likes": 592,
          "links": {
            "html": "https://unsplash.com/photos/a-lush-green-forest-filled-with-lots-of-trees-fWBZ9r4vO9M",
            "download": "https://unsplash.com/photos/fWBZ9r4vO9M/download?ixid=..."
          },
          "width": 4000,
          "height": 6000,
          "premium": true,
          "asset_type": "photo",
          "created_at": "2023-01-12T15:26:03Z",
          "updated_at": "2026-06-09T23:13:24Z",
          "description": null,
          "photographer": {
            "id": "10S_nPICv74",
            "bio": "Young photogapher based in switzerland",
            "name": "Dario Brönnimann",
            "location": "switzerland, Bern",
            "username": "dariobroe",
            "last_name": "Brönnimann",
            "first_name": "Dario",
            "profile_url": "https://unsplash.com/@dariobroe",
            "total_photos": 484,
            "portfolio_url": "https://dariobroe.darkroom.tech/",
            "profile_image": "https://images.unsplash.com/profile-...?crop=faces&fit=crop&w=64&h=64",
            "twitter_username": null,
            "instagram_username": "dariobroe"
          },
          "alt_description": "a lush green forest filled with lots of trees"
        }
      ],
      "per_page": 3,
      "total_pages": 3435,
      "total_results": 10303
    },
    "status": "success"
  }
}

About the Unsplash API

Search and Filter Photos

The search_photos endpoint accepts a required query string and optional parameters — orientation (landscape, portrait, or squarish), order_by (relevant or latest), per_page (up to 30), and page for pagination. The response includes total_results and total_pages so you can page through an entire result set, plus an array of photo objects carrying id, slug, description, and urls at raw, full, regular, small, and thumb sizes.

Full Photo Details

The get_photo_details endpoint takes a photo_id or slug and returns the most complete record available: an exif object (make, model, exposure_time, aperture, focal_length, iso), a location object (name, city, country), views, downloads, a tags array, and a photographer object with username, bio, location, and social links. It also returns a related_collections summary with a total count and collection array.

Tag-Enriched Search

The search_photos_with_tags endpoint combines search and detail retrieval in one call. It accepts the same query, order_by, and orientation parameters as search_photos but returns each photo already enriched with its tags array. The limit parameter (1–30) controls how many enriched results come back. The response also surfaces returned_count and total_available for result-set context.

Response Shape Notes

All three endpoints share a consistent photo object structure. URLs are delivered in five size variants directly usable in <img> tags or download flows. Photographer data includes social links when provided by the source. Tags are title strings (e.g., "mountain", "sunset"), not IDs, making them straightforward to use as labels or filter keys without a separate lookup.

Reliability & maintenanceVerified

The Unsplash API is a managed, monitored endpoint for unsplash.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when unsplash.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official unsplash.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Populating a design tool's stock photo picker using search_photos with orientation filtering
  • Building a photo attribution widget by pulling photographer name, username, and bio from get_photo_details
  • Training an image classifier using keyword search results with their tags arrays from search_photos_with_tags
  • Displaying location metadata (city, country) alongside editorial photos retrieved via get_photo_details
  • Surfacing EXIF camera data (ISO, aperture, focal length) in a photography reference tool
  • Aggregating view and download counts to rank photo popularity by search topic
  • Curating themed mood boards by searching keywords and filtering results to squarish orientation
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Unsplash have an official developer API?+
Yes. Unsplash publishes an official REST API documented at https://unsplash.com/developers. It requires registering an application to obtain an access key and is subject to its own rate limits and display guidelines.
What does `get_photo_details` return beyond what the search endpoints provide?+
It adds fields not present in search results: the exif object (make, model, exposure_time, aperture, focal_length, iso), a location object (name, city, country), views, downloads, and a related_collections summary. Search endpoints return urls, description, and basic photographer info, but not those depth fields.
Does the API return photo collections or user portfolios?+
Not directly. get_photo_details includes a related_collections object with a total count and collection array tied to a specific photo, but there are no endpoints for browsing collections independently or retrieving all photos from a given photographer's portfolio. You can fork the API on Parse and revise it to add those endpoints.
Is there a way to search by color or topic category rather than a text keyword?+
Currently the search parameters support query (text), orientation, and order_by. Color-based filtering and Unsplash's topic/collection taxonomy are not exposed. You can fork the API on Parse and revise it to add color or topic parameters.
What is the maximum number of results I can retrieve in one call, and how does pagination work?+
per_page is capped at 30 for search_photos. The response returns total_pages and total_results so you can iterate using the page parameter. search_photos_with_tags uses a limit parameter (1–30) instead and does not support page-level pagination in the same way.
Page content last updated . Spec covers 3 endpoints from unsplash.com.
Related APIs in OtherSee all →
pexels.com API
Search and browse millions of free stock photos and videos on Pexels. Access trending content, photographer galleries, photo/video challenges, and search suggestions via a clean API.
textures.com API
Search and browse millions of textures by category or keyword to find high-resolution texture maps with detailed pricing and specifications. Discover the latest content additions, explore free samples, and access complete metadata including available resolutions and texture maps for your projects.
images.nasa.gov API
images.nasa.gov API
Wikipedia API
Search Wikipedia and instantly access full article content on any topic, then explore related articles by browsing through Wikipedia categories. Retrieve article metadata, extracts, and navigate curated category trees to discover connected subjects.
weddingwire.com API
Search and retrieve data from WeddingWire vendors, including photographers, caterers, florists, and more. Access search results, detailed vendor profiles, and customer reviews.
openclipart.org API
Search and discover clipart from OpenClipart, explore collections by tag, and retrieve detailed metadata including artist profiles, engagement metrics, and download URLs. Also exposes site-wide statistics such as total clipart count, artist count, and recent upload activity.
elements.envato.com API
Search and browse millions of creative assets from Envato Elements, including stock photos, videos, music, fonts, and templates across all categories. Get detailed information about specific items, pricing plans, and discover new content through keyword search and category browsing.
mywed.com API
Find and connect with photographers worldwide by browsing top-rated professionals, filtering by location, viewing their portfolios and best work, while engaging with the wedding photography community through forums. Discover photographers in your country or city, explore their detailed profiles and photo galleries, and participate in discussions with other users.