Unsplash API

Unsplash Search photos API

Search Unsplash for free stock photos by keyword. Returns image URLs in several sizes, dimensions, alt text, the photographer's name and profile, and the photo's Unsplash page.

POST/v1/run/unsplash.search_photos
Uptime
91.26%
30d · 206 calls
Requests
206
30d · weekly, last 12 wks
Response
12.0s
median · 30d

Pricing

Unsplash Search photos API pricing

You pay
$16.00
$1.60/1k results, only for what you use. No monthly plan.
One request costs at most $0.0336 (21 results).
The $0.10 starting balance covers at least 2 requests.

Try it

Get Unsplash search photos in one request

Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.
{
  "data": {
    "photos": [
      {
        "alt": "example",
        "blurHash": "a1b2c3d4",
        "color": "#1f4fe0",
        "createdUtc": 12.5,
        "description": "A short example description of this item.",
        "downloadUrl": "https://example.com/page",
        "height": 42,
        "id": "a1b2c3d4",
        "image": "https://example.com/image.jpg",
        "imageFull": "https://example.com/image.jpg",
        "imageOriginal": "https://example.com/image.jpg",
        "imageSmall": "https://example.com/image.jpg",
        "likes": 12500,
        "photographer": "https://example.com/image.jpg",
        "photographerAvatarUrl": "https://example.com/image.jpg",
        "photographerBio": "https://example.com/image.jpg",
        "photographerForHire": true,
        "photographerInstagramUsername": "https://example.com/image.jpg",
        "photographerLocation": "https://example.com/image.jpg",
        "photographerTotalLikes": 12500,
        "photographerTotalPhotos": 12500,
        "photographerTwitterUsername": "https://example.com/image.jpg",
        "photographerUrl": "https://example.com/image.jpg",
        "photographerUsername": "https://example.com/image.jpg",
        "photographerWebsite": "https://example.com/image.jpg",
        "sponsored": true,
        "thumbnail": "https://example.com/image.jpg",
        "updatedUtc": 12.5,
        "url": "https://example.com/page",
        "width": 1024
      }
    ]
  },
  "found": true,
  "reason": "not_found"
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

One request, one response shape.

Every field you send and every field you get back, each with a real example.

Last verified 2026-11-14 · uptime and latency measured over 30d

Request body

JSON, posted to this endpoint.

  • querystring

    coffee

    Keyword or phrase to search Unsplash photos for, e.g. "coffee" or "minimal workspace".

  • colorenum

    Only return photos with this dominant color tone. Omit for any color.

  • limitinteger

    2

    Maximum number of photos to return (1-20, default 20). You are billed per photo returned, so a lower limit costs less.

  • orientationenum

    Only return photos with this orientation. Omit for any orientation.

  • sortByenum

    Order results by best match (relevant, the default) or newest first (recent).

You send. A small JSON body. The values shown are examples to replace with your own.

Response

JSON, one example value per field.

each photodata.photos[]

Free Unsplash photos matching the keyword. Unsplash+ premium photos are excluded, so every photo is under the Unsplash License. Unsplash places sponsored photos among the results, flagged by sponsored.

  • altstring

    Alt text describing the photo. Populated whenever the provider has data for the entity.

  • blurHashstring

    BlurHash string for rendering a blurred placeholder while the image loads.

  • colorstring

    Dominant color as a hex code, e.g. "#918c79".

  • createdUtcnumber

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.

  • descriptionstring

    Photographer's own description. Absent when they wrote none.

  • downloadUrlstring

    Unsplash download link for the photo.

  • heightinteger

    Original height in pixels. Populated whenever the provider has data for the entity.

  • idstring

    Photo id on the source site. Populated whenever the provider has data for the entity.

  • imagestring

    Display-size image URL, 1080 px wide. The query parameters set the size, so keep the URL intact. Populated whenever the provider has data for the entity.

  • imageFullstring

    Full-resolution JPEG URL.

  • imageOriginalstring

    Original image URL at full resolution, unprocessed. Populated whenever the provider has data for the entity.

  • imageSmallstring

    Small image URL, 400 px wide.

  • likesinteger

    Number of likes on Unsplash.

  • photographerstring

    Photographer's display name, for attribution. Populated whenever the provider has data for the entity.

  • photographerAvatarUrlstring

    Photographer's profile picture URL.

  • photographerBiostring

    Photographer's Unsplash bio, when they wrote one.

  • photographerForHireboolean

    True when the photographer marks themselves available for hire on Unsplash.

  • photographerInstagramUsernamestring

    Photographer's Instagram username, when they list one on Unsplash.

  • photographerLocationstring

    Photographer's location as they state it on Unsplash, when they list one.

  • photographerTotalLikesinteger

    Number of photos the photographer has liked on Unsplash.

  • photographerTotalPhotosinteger

    Number of photos the photographer has published on Unsplash.

  • photographerTwitterUsernamestring

    Photographer's X (Twitter) username, when they list one on Unsplash.

  • photographerUrlstring

    Photographer's Unsplash profile page, for attribution. Populated whenever the provider has data for the entity.

  • photographerUsernamestring

    Photographer's Unsplash username, without the leading @.

  • photographerWebsitestring

    Photographer's portfolio or personal website, when they list one.

  • sponsoredboolean

    True when Unsplash placed this photo in the results as a sponsored listing.

  • thumbnailstring

    Thumbnail image URL, 200 px wide.

  • updatedUtcnumber

    When the photo's record last changed on Unsplash. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.

  • urlstring

    The photo's page on unsplash.com. Populated whenever the provider has data for the entity.

  • widthinteger

    Original width in pixels. Populated whenever the provider has data for the entity.

top level
  • foundboolean
  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

You get back. Named, typed fields in the same shape whichever source answers.

FAQ

About the Unsplash Search photos API

The AnyAPI Unsplash Search photos API returns Unsplash search photos data as normalized JSON from one POST call to /v1/run/unsplash.search_photos. Search Unsplash for free stock photos by keyword. Returns image URLs in several sizes, dimensions, alt text, the photographer's name and profile, and the photo's Unsplash page. AnyAPI returns one normalized schema whichever source serves it. It costs $1.60 per 1,000 results, and never more than $0.0336 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 91.3% of Unsplash search photos calls through AnyAPI succeeded, with a median response time of 12.0 seconds across 206 measured calls.

It costs $1.60 per 1,000 results, and never more than $0.0336 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet and each call draws it down. Some failed wallet-funded requests incur processing charges that we pass through at cost, with no markup; the error response shows the amount charged.

Search Unsplash for free stock photos by keyword. Returns image URLs in several sizes, dimensions, alt text, the photographer's name and profile, and the photo's Unsplash page. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 91.3% of Unsplash search photos calls through AnyAPI succeeded, with a median response time of 12.0 seconds across 206 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.

Yes. A new AnyAPI account starts with $0.10 of free balance and no card required, which covers at least 2 Unsplash Search photos calls at up to $0.0336 each.

Send a POST request to https://api.getanyapi.com/v1/run/unsplash.search_photos with your AnyAPI key in an "Authorization: Bearer" header and the input as a JSON body. The same key and the same wallet work on every AnyAPI endpoint.

No. You add US dollars to one prepaid AnyAPI balance and each request draws it down. There is no monthly plan and no minimum, and the same balance pays for every AnyAPI endpoint.

Yes. Install @getanyapi/sdk from npm for TypeScript or getanyapi from pip for Python. Both call every AnyAPI endpoint with the same key, and any HTTP client works too.

Yes. An agent can connect to the AnyAPI MCP server at https://api.getanyapi.com/mcp, or create its own free-trial key with one unauthenticated POST to https://api.getanyapi.com/agent/signup and call this endpoint over HTTP.