Facebook Adlibrary Ad API
API 한 번의 호출로 Facebook Adlibrary Ad 데이터를 받아 가세요. Returns one ad from the Facebook Ad Library. Video creatives land in `content.media_urls` (playable URL) and `content.thumbnail_url` (preview frame); every ad signal rides the `post.ext.ad` envelope: CTA text and type, `link_url`, `is_active`, `end_date_iso`, `display_format`, `title`, `publisher_platforms`, `categories`, the video URLs, and the advertiser's own `page_id`, `page_profile_uri` (their Facebook page, so you can chain straight to `/v1/facebook/profile`), `page_like_count` and `page_categories`. **`spend`, `reach_estimate` and `currency` are populated by Facebook for POLITICAL and issue ads only** and read null or empty on a commercial ad; Facebook publishes no per-ad impression count outside that same political set, so there is no impressions figure to return. `post.author.username` is null by design: an Ad Library record carries the page NAME, not its handle, and a name is not a handle. An ad has no public view count, so `engagement.views` carries Facebook's audience REACH ESTIMATE where one exists (political and issue ads) and is null everywhere else; the same figure is on `post.ext.ad.reach_estimate` under its real name, and `computed.engagement_rate` is derived from it rather than from any real engagement. `published_at` is the ad's first-run DATE; the `07:00:00Z` clock component on every row is an artefact of Facebook storing ad dates on a US Pacific day boundary and carries no sub-day meaning. On an ad that ran in the EU, Facebook publishes who saw it: `post.ext.ad.eu_total_reach` is the total EU reach, `post.ext.ad.eu_reach_breakdown` lists each EU country with that reach split into age bands (18-24 to 65+) by `male`, `female` and `unknown`, and `post.ext.ad.targets_eu`, `target_ages`, `target_gender` and `target_locations` are who the advertiser targeted. An ad that never ran in the EU carries none of these, and they read null. For ad video transcripts use `/v1/facebook/adlibrary/ad/transcript` (separate endpoint, premium tier).
2026년 10월 업데이트SocialCrawl 팀이 직접 관리해요
Facebook 광고 라이브러리의 광고 하나를 돌려줍니다. 소재와 클릭 유도 문구, 연결 링크, 집행 기간, 표시 형식에 더해 광고주 페이지 주소와 좋아요 수, 카테고리까지 담깁니다. 집행 금액과 도달 수는 정치·사회 이슈 광고에만 공개됩니다.
광고 id나 URL을 이미 들고 있을 때 사용하세요. 영상 광고가 소리로 무슨 말을 하는지 알아야 하면 adlibrary/ad/transcript를 쓰세요. 노출 수는 정치 광고가 아니면 Facebook이 공개하지 않아 돌려드릴 값이 없습니다.
68개 플랫폼을 병렬로 검색합니다
Adlibrary Ad API로 무엇을 할 수 있을까요
Adlibrary Ad 엔드포인트가 통합 스키마와 계산 필드를 담은 Facebook 데이터를 한 번의 요청으로 보내드려요. 스크래핑 인프라를 직접 만들거나 유지할 필요가 없어요.
요청 예시
curl -H "x-api-key: YOUR_API_KEY" \
"https://www.socialcrawl.dev/v1/facebook/adlibrary/ad?id=1702938977100376&trim=true"import requests
response = requests.get(
"https://www.socialcrawl.dev/v1/facebook/adlibrary/ad",
params={
'id': '1702938977100376',
'trim': 'true',
},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()const response = await fetch(
"https://www.socialcrawl.dev/v1/facebook/adlibrary/ad?id=1702938977100376&trim=true",
{
headers: { "x-api-key": "YOUR_API_KEY" },
},
);
const data = await response.json();함께 보내면 좋은 파라미터
trim=true가격은 같습니다. 용량이 큰 원본 필드를 빼서 응답이 가벼워집니다.
파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| id | 아니오 | Facebook Ad Library ad ID. Ad ids rotate as campaigns end, so take a current one from `/v1/facebook/adlibrary/company/ads` or `/v1/facebook/adlibrary/search/ads` rather than reusing an old one. |
| url | 아니오 | Facebook Ad Library URL for the ad (`https://www.facebook.com/ads/library?id=...`). A page URL is rejected with a 400 at 0 credits. |
| trim | 아니오 | Set to true for a trimmed down version of the response |
Facebook Adlibrary Ad API는 무엇을 돌려주나요
모든 응답은 하나의 통합 스키마를 따라요. 크레딧을 쓰기 전에 어떤 필드가 돌아오는지, 실제 응답 본문 그대로 확인해 보세요.
응답 예시 보기
{
"success": true,
"platform": "facebook",
"endpoint": "/v1/facebook/adlibrary/ad",
"data": {
"post": {
"id": "1702938977100376",
"url": "https://www.facebook.com/ads/library?id=1702938977100376",
"content": {
"text": "Bring sports more fully into your day with the Nike App.",
"media_urls": [
"https://scontent-iad6-1.xx.fbcdn.net/v/t39.35426-6/431644642_737508601479774_8272309847273720820_n.jpg?_nc_cat=102&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=vnzhHfbNDoYQ7kNvwFR_7Ce&_nc_oc=Adp0orT-UKwnBWQeVYkt3ZVfpMZ_QWC7uayKLPLi2C7fYfm7-_pPjRPeK7jx2Vo_BB4&_nc_zt=14&_nc_ht=scontent-iad6-1.xx&_nc_gid=WMMONsHbmrH7xgysxW6OEg&_nc_ss=78289&oh=00_AQOPCc6--nHygyqzA1g_YVTHCST1Ub1xT043ToQRUz6xEQ&oe=6AC5A203",
"https://scontent-iad6-1.xx.fbcdn.net/v/t39.35426-6/431679131_949214166636263_7090981238489979310_n.jpg?_nc_cat=100&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=_PGRVKv7_wsQ7kNvwGK87vn&_nc_oc=AdpzUCNj1EcgYWMNGogrXditJxh6XCHupS-v560CLAqzZ8rEnEpjJTkpNLvYJLzUMbU&_nc_zt=14&_nc_ht=scontent-iad6-1.xx&_nc_gid=WMMONsHbmrH7xgysxW6OEg&_nc_ss=78289&oh=00_AQO8K6YfVO8X4rAfLtxqB0u3xWvZHLQ7lwG1xetxDIZNdQ&oe=6AC5B751"
],
"thumbnail_url": "https://scontent-iad6-1.xx.fbcdn.net/v/t39.35426-6/431644642_737508601479774_8272309847273720820_n.jpg?_nc_cat=102&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=vnzhHfbNDoYQ7kNvwFR_7Ce&_nc_oc=Adp0orT-UKwnBWQeVYkt3ZVfpMZ_QWC7uayKLPLi2C7fYfm7-_pPjRPeK7jx2Vo_BB4&_nc_zt=14&_nc_ht=scontent-iad6-1.xx&_nc_gid=WMMONsHbmrH7xgysxW6OEg&_nc_ss=78289&oh=00_AQOPCc6--nHygyqzA1g_YVTHCST1Ub1xT043ToQRUz6xEQ&oe=6AC5A203",
"duration_seconds": null
},
"author": {
"username": null,
"display_name": "Nike",
"avatar_url": "https://scontent-iad3-1.xx.fbcdn.net/v/t39.35426-6/431756959_712871054375981_2401799800446082357_n.jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=104&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=QiJ8JxACRTsQ7kNvwGaIDNC&_nc_oc=AdrjFQ1sqGZEfMAu57gXkPUmUIyestjFvK8M7o8RPDAMVTMP4gqSS1ztxJarGK87wSg&_nc_zt=14&_nc_ht=scontent-iad3-1.xx&_nc_gid=WMMONsHbmrH7xgysxW6OEg&_nc_ss=78289&oh=00_AQNC3VdCMsPqVL45f5f3mW8P4lGrnsedmF_MEQAShKFFog&oe=6AC5A406",
"verified": null
},
"engagement": {
"views": null,
"likes": null,
"comments": null,
"shares": null,
"saves": null
},
"flags": {
"nsfw": null,
"spoiler": null,
"pinned": null,
"deleted": false
},
"published_at": "2025-04-07T07:00:00.000Z",
"ext": {
"ad": {
"page_id": "15087023444",
"currency": "",
"spend": null,
"reach_estimate": null,
"publisher_platforms": [
"facebook",
"instagram"
],
"categories": [
"UNKNOWN"
],
"cta_text": "Install now",
"cta_type": "INSTALL_MOBILE_APP",
"link_url": "http://itunes.apple.com/app/id1095459556",
"is_active": true,
"end_date_iso": "2026-10-02T07:00:00.000Z",
"display_format": "DPA",
"title": "Cosmic Unity 3 Basketball Shoes",
"page_profile_uri": "https://www.facebook.com/nike/",
"page_like_count": 39509712,
"page_categories": [
"Sportswear",
"Product/service"
],
"caption": "itunes.apple.com",
"video_hd_url": null,
"video_sd_url": null
}
}
},
"computed": {
"engagement_rate": null,
"language": "en",
"content_category": "other",
"estimated_reach": null
}
},
"credits_used": 5,
"request_id": "req_example000000",
"cached": false,
"credits_remaining": 9999,
"source": "captured",
"captured_at": "2026-10-02T15:36:34.491Z",
"redacted": true
}통합 응답 구조를 보여 주는 실제 샘플이에요. 필드 값은 조회한 대상에 따라 달라져요.
Facebook Adlibrary Ad API는 어떻게 동작하나요
API 키와 함께 GET 요청을 보내면, 통합 스키마와 계산 필드를 담은 깔끔한 JSON이 돌아와요.
메서드
GET
응답 형식
JSON
소셜 미디어 데이터를 몇 초 만에 수집하는 방법
개발자를 위한 가장 빠른 소셜 미디어 스크래핑 API. 월간 활성 사용자 100억 명 이상을 포괄하는 68개 플랫폼에서 프로필, 게시물, 댓글, 분석 데이터를 수집하세요.
모든 플랫폼을 하나의 스키마로
동일한 응답 구조로 68개 플랫폼을 조회하세요. 연동은 한 번이면 충분합니다.
단순 수집을 넘어 계산된 필드 제공
엔드포인트가 해당 지표를 지원하고 계산에 필요한 원본 값이 있을 때, 정규화된 레코드에 engagement_rate, estimated_reach, content_category, language를 함께 담아 바로 활용할 수 있습니다.
코드 한 줄 쓰기 전에, 데이터부터
Visual Data Explorer에 URL만 붙여넣으면 결과 카드와 정형화된 테이블, CSV 내보내기를 바로 사용할 수 있습니다.
import requests
response = requests.get(
'https://www.socialcrawl.dev/v1/tiktok/profile',
params={'handle': 'charlidamelio'},
headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json(){
"success": true,
"platform": "tiktok",
"data": {
"author": {
"username": "charlidamelio",
"followers": 152400000
},
"engagement": {
"likes": 12400000000,
"engagement_rate": 0.087
},
"metadata": {
"language": "en",
"content_category": "lifestyle"
}
}
}자주 묻는 질문
API, 요금제, 기능에 대한 질문과 답변입니다.
문의하기Facebook Ad Library 광고는 어떻게 가져오나요?
Ad Library 엔드포인트는 어떤 데이터를 응답해 주나요?
Ad Library API는 요금이 얼마인가요?
영상 광고의 자막도 받을 수 있나요?
정치·이슈 광고도 포함되나요?
AI에게 SocialCrawl을 물어보세요
Facebook Adlibrary Ad 데이터, 가져올 준비 되셨어요?
API 키 받고 60초 안에 Facebook 데이터를 받아 가세요.
