Skip to content
scrapeatlas.Dashboard

Ad video transcript

Try in Playground

Return plain speech text from the first available primary or carousel video. Image-only ads and videos without detected speech return transcript_available=false.

GET/v1/facebook/adLibrary/ad/transcriptx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
idstringquery

Exact numeric archive ID, supplied as a string. Use id or url, not both.

Example123456789012345678
urlstringquery

Canonical HTTPS facebook.com/ads/library/?id= URL.

max 4096 chars

trimenumquery

Use the compact field projection while preserving creative snapshots and regional transparency.

one of: true, false

includeTranscriptenumquery

Recognize speech in the first available primary or carousel video. Requires configured local Whisper and FFmpeg.

one of: true, false

cache_max_ageenumquery

Accepted freshness hint; every response is fetched live and returns cached=false.

one of: 1d, 3d, 7d, 14d, 30d

Response fields
18
successboolean

Whether usable public data was retrieved.

statusenum

Query filter: ACTIVE (default), INACTIVE or ALL. Response: success, partial, failed or challenged.

one of: success, partial

requestIdstring

Request correlation ID.

sourceUrlstring

Canonical public library URL.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

Completeness of the bounded source result, with explicit auxiliary-data warnings.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

Upstream requests, decoded response bytes and elapsed milliseconds. Page 1 includes browser bootstrap traffic; a warm continuation is one GraphQL POST.

accounting.upstreamRequestsinteger

Always included.

0 – 100

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

Transcript result.

data.ad_idstring

Always included.

data.urlstring

Always included.

absolute HTTPS URL

data.transcriptstringnullable

Always included.

data.transcript_availableboolean

Always included.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
12
HTTPfailure.codeMeaning
400invalid_requestInvalid, conflicting or unsupported parameters/cursor.
401unauthorizedMissing or invalid x-api-key.
403restricted_pageSource marks the ad restricted.
404not_foundExplicitly absent ad or no exact company match.
429upstream_rate_limitedMeta rate limit after at most two fresh proxy-session retries; direct egress is never retried on the same IP.
502upstream_error upstream_challenged unsupported_pageSource failed, challenged, or returned unsupported data.
502response_too_large request_limit payload_too_complexAn operation bound was exceeded.
503busyBoth retrieval slots are occupied.
504timeoutThe operation deadline expired.
503transcription_unavailableLocal speech runtime is not configured.
502transcription_failedMedia decoding or speech recognition failed.
422transcription_too_longVideo exceeds the 180-second speech limit.