Search TikTok videos

Search TikTok videos by free-text keyword (not hashtag — use tiktok.search.hashtag.list for that).

GET/v1/tiktok/search
1credit
x-api-keystringheader

API key (`sfk_...`)

Parameters
6
querystringrequiredquery

Search query text for TikTok videos.

min 1 chars · max 512 chars

datePostedstringoptionalquery

Optional upload date filter for video results.

one of: yesterday, this-week, this-month, last-3-months, last-6-months, all-time

sortBystringoptionalquery

Optional sort order for search results.

one of: relevance, most-liked, date-posted

regionstringoptionalquery

Optional two-letter ISO 3166-1 country code for localized search results.

cursorstringoptionalquery

Opaque pagination cursor returned by a previous response.

min 1 chars

trimbooleanoptionalquery

When true, returns a smaller response with fewer fields.

Response fields
45

Endpoint-specific response payload.

dataquery
string

Search query that was evaluated for this response.

Matching TikTok videos. TikTok may return the same video more than once for some searches.

datavideos[]id
string

TikTok video identifier.

min 1 chars

datavideos[]caption
stringnullable

Caption text shown for the TikTok video.

datavideos[]createdAt
stringnullable

ISO-8601 timestamp when the video was created, when available.

datavideos[]url
stringnullable

Canonical public TikTok URL for the video.

datavideos[]thumbnailUrl
stringnullable

Source-platform CDN thumbnail or cover URL when available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset. For durable hosted copies on this list route, pass `hostMedia=true`.

datavideos[]durationMs
integernullable

Video duration in milliseconds, when available.

≥ 0

datavideos[]pinned
boolean

Whether the video is pinned on the profile.

datavideos[]isAd
boolean

Whether TikTok marks the video as an ad.

Engagement metrics for the video.

datavideos[]statsviews
integer

View count reported by TikTok for the video.

≥ 0

datavideos[]statslikes
integer

Like count reported by TikTok for the video.

≥ 0

datavideos[]statscomments
integer

Comment count reported by TikTok for the video.

≥ 0

datavideos[]statsshares
integer

Share count reported by TikTok for the video.

≥ 0

datavideos[]statssaves
integer

Save or collection count reported by TikTok for the video.

≥ 0

Download-related media URLs for the video.

datavideos[]mediadownloadUrl
stringnullable

Source-platform CDN download URL, usually with watermark, when available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset. For durable hosted copies on this list route, pass `hostMedia=true`.

datavideos[]mediadownloadWithoutWatermarkUrl
stringnullable

Source-platform CDN download URL without watermark when available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset. For durable hosted copies on this list route, pass `hostMedia=true` (preferred over the watermarked URL when both are present).

datavideos[]details
objectoptional

Additional TikTok-native fields for this video (for example author, music, challenges, and full `video` and `statistics` objects). Keys that only duplicate the top-level fields are omitted.

Present only when `hostMedia=true`. Hosted copies and/or per-asset failures for this video.

datavideos[]hostedMedia[]status
string

Whether SocialFetch stored a durable copy of this asset.

one of: stored, failed

datavideos[]hostedMedia[]type
string

Normalized media kind.

one of: image, video

datavideos[]hostedMedia[]role
stringoptional

Which source field this asset was derived from.

one of: display, thumbnail, video

datavideos[]hostedMedia[]originalUrl
stringoptional

Source-platform CDN URL that was requested for hosting. Still transient; prefer `url` when status is stored.

datavideos[]hostedMedia[]url
stringoptional

Time-limited SocialFetch delivery URL when status is stored. Re-request hostMedia (or a future refresh route) before this expires if you still need access; object retention may outlive the delivery URL.

datavideos[]hostedMedia[]expiresAt
stringoptional

ISO-8601 timestamp when the returned delivery URL stops working.

datavideos[]hostedMedia[]retainedUntil
stringoptional

ISO-8601 timestamp when the stored object is deleted from SocialFetch storage (90-day tier).

datavideos[]hostedMedia[]mime
stringoptional

MIME type of the stored bytes when status is stored.

min 1 chars

datavideos[]hostedMedia[]bytes
integeroptional

Stored size in bytes when status is stored.

≥ 0

datavideos[]hostedMedia[]width
integernullableoptional

Pixel width when known.

≥ 0

datavideos[]hostedMedia[]height
integernullableoptional

Pixel height when known.

≥ 0

datavideos[]hostedMedia[]entityId
stringoptional

Opaque parent entity id for this asset (post, reel, photo, or video id).

min 1 chars

datavideos[]hostedMedia[]postId
stringoptional

Legacy Instagram media id alias for `entityId`. Prefer `entityId`.

min 1 chars

datavideos[]hostedMedia[]errorCode
stringoptional

Typed failure code when status is failed.

min 1 chars

datavideos[]hostedMedia[]errorMessage
stringoptional

Short customer-safe failure message when status is failed.

min 1 chars

Pagination state for the current response.

datapagenextCursor
stringnullable

Cursor to pass in the next request when more videos are available.

datapagehasMore
boolean

Whether another page of videos is available.

Metadata describing the request and billing outcome.

metarequestId
string

Unique request identifier for tracing this API call.

min 1 chars

metacreditsCharged
integer

Credits charged for this request.

≥ 0

metaversion
string

Public API version that served the response.

one of: v1

metacached
booleanoptional

True when served from shared response cache. Credits still apply (full endpoint price); Age header may be present.

Code example

curl "https://api.socialfetch.dev/v1/tiktok/search?query=web scraping" \
  -H "x-api-key: YOUR_API_KEY"

Responses

Video search results for the requested query.