TikTok API

TikTok Search photos API

Search TikTok for photo-mode (slideshow) posts by keyword, with every image in each post plus view, like and comment counts. tiktok.search_keyword returns videos and drops these.

POST/v1/run/tiktok.search_photos
Requests
-
30d

Pricing

One price, in dollars

Providers
Tiger- served- uptime- p50$1.20/1k reqflat

Try it

Make your first 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": {
    "nextCursor": "example",
    "posts": [
      {
        "author": "Alex Rivera",
        "authorFollowers": 12500,
        "authorName": "Alex Rivera",
        "authorSecUid": "Alex Rivera",
        "authorVerified": true,
        "caption": "A short example description of this item.",
        "comments": 12500,
        "createdUtc": 12.5,
        "hashtags": [
          "a1b2c3d4"
        ],
        "id": "a1b2c3d4",
        "images": [
          {
            "height": 42,
            "image": "https://example.com/image.jpg",
            "width": 1024
          }
        ],
        "likes": 12500,
        "saves": 42,
        "shares": 13,
        "soundAuthor": "Alex Rivera",
        "soundClipId": "a1b2c3d4",
        "soundTitle": "Example title",
        "title": "Example title",
        "views": 12500
      }
    ]
  },
  "found": true
}
Response interface
interface TiktokSearchPhotosResponse {
  data: {
    nextCursor: string | null;
    posts: {
      author: string;
      authorFollowers?: number;
      authorName?: string;
      authorSecUid?: string;
      authorVerified?: boolean;
      caption: string;
      comments: number;
      createdUtc: number;
      hashtags?: string[];
      id: string;
      images?: {
        height?: number;
        image: string;
        width?: number;
      }[];
      likes: number;
      saves?: number;
      shares: number;
      soundAuthor?: string;
      soundClipId?: string;
      soundTitle?: string;
      title?: string;
      views: number;
    }[];
  } | null;
  found: boolean;
}

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

Reference

Request, response, and price

Last verified 2026-09-16 · uptime and latency measured over 30d
POST /v1/run/tiktok.search_photos
curl -X POST https://api.getanyapi.com/v1/run/tiktok.search_photos \
  -H "Authorization: Bearer $ANYAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"latte art"}'
FieldTypeExample value
Request body
querystring"latte art"Search keyword.
cursorstringPagination cursor from a previous response's nextCursor.
limitintegerMaximum items to return in one page.
Response
dataobject
data.nextCursorstringOpaque cursor for the next page, or null when there are no more. Pass it back as cursor to continue.
data.postsobject[]Photo-mode posts matching the keyword.
data.posts[].authorstringHandle of the account that posted the video, without the leading @. Populated whenever the provider has data for the entity.
data.posts[].authorFollowersintegerThe author's follower count at the time of the request. TikTok rounds this for large accounts.
data.posts[].authorNamestringThe author's display name, which is not the handle and can contain any characters.
data.posts[].authorSecUidstringThe author's TikTok sec_uid. Pass it straight to tiktok.profile_reposts or tiktok.profile_playlists to pivot to that creator without a tiktok.profile lookup.
data.posts[].authorVerifiedboolean
data.posts[].captionstringPopulated whenever the provider has data for the entity.
data.posts[].commentsinteger
data.posts[].createdUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.
data.posts[].hashtagsstring[]Hashtags carried in the caption, without the leading #. Empty when the post uses none; @-mentions are excluded.
data.posts[].idstringTikTok video id. Pass it to tiktok.video as id for the full record. Populated whenever the provider has data for the entity.
data.posts[].imagesobject[]The slideshow's images in order.
data.posts[].images[].heightinteger
data.posts[].images[].imagestringImage URL. A signed, short-lived TikTok CDN URL - the query params are load-bearing, so keep the URL intact. Populated whenever the provider has data for the entity.
data.posts[].images[].widthinteger
data.posts[].likesinteger
data.posts[].savesinteger
data.posts[].sharesinteger
data.posts[].soundAuthorstringCredited author of the sound.
data.posts[].soundClipIdstringId of the sound the post uses. Pass it to tiktok.song or tiktok.song_videos as clipId.
data.posts[].soundTitlestringName of the sound. "original sound" means the creator's own audio rather than a licensed track.
data.posts[].titlestringThe slideshow's own title, which TikTok stores separately from the caption. Absent when the creator set none.
data.posts[].viewsinteger
foundboolean
Price
Price per requestUSD$0.0012
Price /1k reqUSD$1.20

FAQ

About the TikTok Search photos API

The AnyAPI TikTok Search photos API returns TikTok search photos data as normalized JSON from one POST call to /v1/run/tiktok.search_photos. Search TikTok for photo-mode (slideshow) posts by keyword, with every image in each post plus view, like and comment counts. tiktok.search_keyword returns videos and drops these. AnyAPI returns one normalized schema whichever source serves it. It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum.

It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

Search TikTok for photo-mode (slideshow) posts by keyword, with every image in each post plus view, like and comment counts. tiktok.search_keyword returns videos and drops these. 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.