Facebook Page ID Finder — Find Meta Page IDs by Brand Name avatar

Facebook Page ID Finder — Find Meta Page IDs by Brand Name

Pricing

from $8.00 / 1,000 results

Go to Apify Store
Facebook Page ID Finder — Find Meta Page IDs by Brand Name

Facebook Page ID Finder — Find Meta Page IDs by Brand Name

Facebook Page ID finder. Enter a brand name and get Meta Page IDs with category, likes, avatar, and Instagram username. Use with Facebook, Instagram, or WhatsApp Ad Library scrapers. No cookies or API key.

Pricing

from $8.00 / 1,000 results

Rating

5.0

(1)

Developer

Scrapeify

Scrapeify

Maintained by Community

Actor stats

2

Bookmarked

25

Total users

5

Monthly active users

a day ago

Last modified

Share

Facebook Page ID finder and Meta brand lookup. Enter a brand name and get Facebook Page IDs with category, likes, avatar, Instagram username, verification, and page alias. Uses Meta Ad Library typeahead with keyword-search fallback. No browser, cookies, or Meta API key required.

Use as step one before any Facebook Ad Library, Instagram Ads, or WhatsApp Ads scrape: pass adlibrary_url as pageId to the Meta Ad Library Scraper, Instagram Ad Library Scraper, or WhatsApp Ad Scraper.

Also known as: Meta Brand Finder, Facebook advertiser lookup, Page ID resolver, brand-to-page-ID API.


Features

CapabilityDetail
Typeahead-first searchUses Meta's useAdLibraryTypeaheadSuggestionDataSourceQuery — same as the Ad Library search box
Automatic keyword fallbackIf typeahead is empty or fails, falls back to keyword GraphQL ad search with retries
Single-string inputJust pass brand_name — strategy, country, and ad type use sensible defaults
Instagram enrichmentTypeahead returns ig_username, ig_followers, and ig_verification when linked
Automated dedup + mergeStable keys on page_id; merges duplicates preferring non-null fields
Rich suggestion rowsPage ID, name, category, avatar, likes, verification, page alias, country
Operational metricssuggestion_source, typeahead_keywords, source_ads_count, timing in SUMMARY
Chain-ready outputadlibrary_url maps directly to pageId in all downstream Scrapeify Ad Library actors
Resilient retriesGraphQL requests retry on timeout and transient HTTP errors before failing

Use Cases

Page ID Discovery (Primary Use Case)

The most common use: find the numeric page_id for any Meta advertiser programmatically. Pass the result as pageId to the Meta, Instagram, or WhatsApp Ad Library scrapers for deep creative pulls — without manually hunting IDs in the browser UI.

Competitive Brand Mapping

Build a registry of competitor Page IDs keyed to your internal brand taxonomy. Automate quarterly refreshes to detect newly advertising pages, brand renames, or subsidiary accounts entering the paid social market.

Brand List Automation

Process a CSV of 100+ brand names through a fan-out orchestration. Each row gets a Brand Finder run, validated Page IDs, a subsequent creative pull, and dashboard ingestion — zero manual UI work at scale.

Disambiguation & Homonym Research

The same brand string can return multiple advertisers — regional entities, retailers, franchisees, licensees. Surface all candidates with category, likes, and avatar_url for human or LLM-assisted selection before triggering expensive creative pulls.

AI Agent Tool Registration

Register as an agent tool that converts natural-language brand mentions to structured (page_id, name, category) tuples. Downstream agents invoke Ad Library scrapers with exact Page IDs rather than keyword searches, improving result precision.

CRM Data Enrichment

Join marketing CRM brand strings to Meta social graph entities. Enrich contact and company records with category, likes, page_alias, and avatar_url for segmentation, lead scoring, or campaign targeting.

Market Landscape Research

Discover which advertiser entities are actively running ads for any brand or category keyword. Build a rapid competitive landscape map without manual browsing — output feeds directly into category analysis dashboards.

Periodic Monitoring

Run the finder on a schedule for your tracked brand list. Diff adlibrary_url sets between runs to detect new advertiser entrants, brands that stopped advertising, or renamed pages.


Why Choose This Actor

  • Focused scope — discovery only, not creative dumps; keeps individual runs cheap and fast
  • Schema alignmentadlibrary_url maps directly to pageId across all Scrapeify Ad Library actors
  • Explicit recall metricssource_ads_count and pages_scraped on every run so you know when coverage is thin
  • Production failure handlingActor.fail with typed error KV keys surfaces to monitoring infrastructure

Quick Start

  1. Open the Scrapeify Brand Finder on Apify Console.
  2. Enter a brand_name string (e.g. Nike or Glossier).
  3. Click Start and wait for completion (typically 20–40 seconds).
  4. Open the Dataset for deduplicated suggestion rows.
  5. Check SUMMARY in the default KV store for counts and timing.
  6. Pass the adlibrary_url value (numeric Page ID) as pageId in a downstream Ad Library scraper.

Tip: Review category, likes, and avatar_url before passing a Page ID to a creative scraper — especially for common brand names with multiple candidate pages.


Input Schema

{
"brand_name": "Nike"
}
FieldTypeRequiredDescription
brand_namestringYesBrand name or search string (e.g. Nike, Glossier). Cannot be empty.

Internally the actor runs typeahead-first with keyword fallback (auto), country ALL, and ad type ALL.


Output Schema

Dataset Row (one row per unique advertiser page candidate)

{
"adlibrary_url": "15087023444",
"brand_name": "Nike Global",
"category": "Sportswear",
"avatar_url": "https://scontent.xx.fbcdn.net/v/t39.30808-1/...",
"likes": 38000000,
"verification": null,
"page_alias": "nike",
"ig_username": "nike",
"ig_followers": 300000000,
"ig_verification": true,
"advertiser_country": "US",
"entity_type": "PAGE",
"page_is_deleted": false,
"search_brand_name": "Nike",
"timestamp": "2026-05-07T12:34:56.789012"
}
FieldTypeDescription
adlibrary_urlstringNumeric Page ID — pass as pageId in downstream Ad Library scrapers
brand_namestringPage display name from Meta
categorystringMeta page category (e.g. Sportswear, Financial Services, Health & Beauty)
avatar_urlstringPage profile image URL for visual verification
likesintegerPage like count at time of scrape
verificationstring/nullVerification badge status if available
page_aliasstringVanity URL slug (e.g. nikefacebook.com/nike)
ig_usernamestring/nullLinked Instagram username (from typeahead when available)
ig_followersinteger/nullInstagram follower count (from typeahead when available)
ig_verificationboolean/nullInstagram verification badge (from typeahead when available)
advertiser_countrystring/nullAdvertiser country from typeahead
entity_typestring/nullMeta entity type
page_is_deletedboolean/nullWhether the page is marked deleted (filtered from results)
search_brand_namestringInput brand_name echoed for warehouse joins and audits
timestampstringISO 8601 UTC timestamp of extraction

Important: adlibrary_url is a stringified numeric Page ID, not a URL. Pass it directly as the string value of pageId.

Key-Value Store: SUMMARY

{
"brand_name": "Nike",
"suggestion_strategy": "auto",
"suggestion_source": "typeahead_graphql",
"typeahead_keywords": ["nike"],
"total_results": 12,
"suggestions_count": 12,
"source_ads_count": 0,
"pages_scraped": 1,
"execution_time_seconds": 4.2,
"typeahead_seconds": 4.1,
"timestamp": "2026-05-07T12:34:56.789012"
}

Key-Value Store: RESULTS

{
"suggestions": [
{
"adlibrary_url": "15087023444",
"brand_name": "Nike Global",
"category": "Sportswear",
"avatar_url": "https://scontent.xx.fbcdn.net/...",
"likes": 38000000,
"verification": null,
"page_alias": "nike"
}
],
"metadata": {
"brand_name": "Nike",
"total_results": 12,
"source_ads_count": 150,
"execution_time_seconds": 28.4,
"timestamp": "2026-05-07T12:34:56.789012"
}
}
KV KeyDescription
SUMMARYRun counts, timing, and brand name — ideal for dashboards and zero-result alerts
RESULTSFull suggestion array + metadata — download for pipeline ingestion
ERROROn failure: { error, timestamp, brand_name } — triggers Actor.fail

API Examples

cURL

curl "https://api.apify.com/v2/acts/scrapeify~facebook-page-id-finder/runs?token=$APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{"brand_name": "Allbirds"}'

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("scrapeify/facebook-page-id-finder").call(
run_input={"brand_name": "Allbirds"}
)
pages = client.dataset(run["defaultDatasetId"]).list_items().items
for page in pages:
print(f"Page ID: {page['adlibrary_url']} | Name: {page['brand_name']} | Category: {page['category']}")

JavaScript / Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("scrapeify/facebook-page-id-finder").call({
brand_name: "Lululemon",
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Found ${items.length} advertiser candidates for Lululemon`);

Chain Example — Brand Finder → Meta Ad Scraper (JavaScript)

// Step 1: Resolve brand name to Page ID candidates
const finderRun = await client.actor("scrapeify/facebook-page-id-finder").call({
brand_name: "Glossier",
});
const { items } = await client.dataset(finderRun.defaultDatasetId).listItems();
// Step 2: Select best candidate (validate category/likes before automating)
const pageId = items[0]?.adlibrary_url;
// Step 3: Deep ad creative pull
const adsRun = await client.actor("scrapeify/meta-ad-library-scraper").call({
pageId: String(pageId),
maxResults: 400,
sortBy: "total_impressions",
});

Chain Example — Brand Finder → Meta Ad Scraper (Python)

finder_run = client.actor("scrapeify/facebook-page-id-finder").call(
run_input={"brand_name": "Glossier"}
)
items = client.dataset(finder_run["defaultDatasetId"]).list_items().items
page_id = str(items[0]["adlibrary_url"])
ads_run = client.actor("scrapeify/meta-ad-library-scraper").call(
run_input={"pageId": page_id, "maxResults": 400, "sortBy": "total_impressions"}
)

Integration Examples

LangChain

from langchain.tools import tool
@tool
def find_meta_page_id(brand_name: str) -> list:
"""Resolve a brand name to Meta advertiser Page ID candidates with category and likes."""
run = client.actor("scrapeify/facebook-page-id-finder").call(
run_input={"brand_name": brand_name}
)
return client.dataset(run["defaultDatasetId"]).list_items().items

Chain: find_meta_page_idget_meta_adsanalyze_creative_themes

CrewAI

BrandResearchAgent resolves brand names with this tool. AdStrategyAgent receives validated Page IDs and pulls creative data. BriefAgent generates competitive reports — no manual URL hunting in the workflow.

AutoGen

# UserProxyAgent: "Find Allbirds' Meta Page ID and pull their top 200 Instagram ads"
# AssistantAgent calls brand_finder → validates candidates → calls instagram_scraper
# AnalysisAgent clusters creative themes from structured JSON

Make.com / Zapier

Iterator over brand name list → HTTP POST to Brand Finder → collect Page ID per brand → batch-trigger Meta ad scraper → aggregate in Google Sheets competitive dashboard.

Claude / Gemini Tool Use

Feed multiple candidate rows as JSON context. Prompt the model: "Given these Meta page candidates for 'Nike', which best matches a global sportswear brand selling running shoes?" Ground final selection on numeric ID, not name alone.

n8n Workflow

  1. Cron trigger → Brand Finder run per brand
  2. Read SUMMARY.suggestions_count
  3. If 0 → Slack alert "No pages found for {brand_name}"
  4. If >0 → pass top adlibrary_url to Meta Ad Scraper → update Notion database

Vector Database

Embed brand_name + " " + category as semantic vector. Store adlibrary_url, likes, page_alias as metadata. Build a brand-to-page mapping retrieval system for disambiguation at scale.


Frequently Asked Questions

1. What exactly is adlibrary_url? A stringified numeric Meta Page ID — despite the field name, it is not a URL. Pass it directly as the string value of pageId in downstream scrapers.

2. How does the search strategy work? Runs Meta Ad Library typeahead first (fast, rich IG data). If typeahead returns no pages or times out, it automatically falls back to keyword GraphQL ad search with retries.

3. Why is the internal keyword fetch capped at 75 source ads? Balances cost, speed, and coverage during keyword fallback. Typeahead mode returns pages directly without this cap. Fork to increase MAX_RESULTS if wider recall is required.

4. How do I handle multiple candidates for one brand? Review category, likes, and avatar_url for each row. Use a disambiguation heuristic or an LLM prompt to select the correct entity before triggering expensive creative pulls.

5. Why are ig_username and ig_followers sometimes null? Typeahead results include Instagram data when Meta links an IG account. Keyword-search fallback rows may not include IG fields — use typeahead mode or enrich externally via page_alias.

6. What does search_brand_name contain? Your exact input brand_name echoed on every row. Preserves audit trail when processing lists of brands in batch pipelines.

7. What happens if no results are returned? SUMMARY.total_results = 0 — a clean completion, not an error. The brand may not have active ads in the Ad Library.

8. Does this verify business ownership or registration? No — outputs are derived from public Meta Ad Library data only. Association between brand string and page is probabilistic.

9. Can I run this for 500 brands simultaneously? Use a fan-out orchestrator with controlled concurrency. Avoid thousands of simultaneous identical queries from a single IP — add request jitter.

10. What triggers Actor.fail? Invalid input (empty brand_name) or unhandled exceptions after all retries and fallbacks are exhausted.

11. Can I filter results by country? The Console form only asks for brand_name. Search runs globally (country=ALL). Country-specific creative pulls should use a downstream Ad Library scraper.

12. How long does a typical run take? Typeahead: 5–15 seconds. Keyword fallback: 30–90 seconds depending on Meta response time.

13. Are re-runs idempotent? Results reflect the Ad Library state at execution time. Re-runs may return slightly different candidates as advertisers enter or exit the platform.

14. Is category always accurate? Category comes from Meta's public page data. It may be null, generic (Brand, Company), or miscategorized by the page owner.

15. Can I find Instagram-only advertisers with this? This finder discovers Meta page candidates globally. Use the resulting Page ID with the Instagram Ad Scraper for Instagram-specific data.

16. What is collated_strategy="all" on keyword fallback? Instructs the underlying fetch to aggregate all available ad format types — still bounded by Meta's API responses. More comprehensive than a single-pass approach.

16. Are timestamps in UTC? Yes — ISO 8601 format in UTC across all timestamp fields.

17. How do I set up zero-result alerts? After each run, compare SUMMARY.suggestions_count to 0. If zero, route to a Slack or email alert in your orchestrator.

18. What encoding are brand name and page name fields in? UTF-8. Non-Latin brand names (Arabic, Chinese, Korean, etc.) pass through unchanged.

19. Is this suitable for political advertiser research? Political pages appear in the Ad Library. Apply appropriate data governance and privacy obligations to this use case.

20. What does a "collided" brand name mean? Multiple distinct advertisers bidding on the same search term. Expect multiple rows; do not auto-select the first result for high-stakes automation.

21. Can I get a page's website URL from this actor? Website URL is not a primary output field. Use page_alias to construct the Facebook URL, or enrich via downstream scraper fields.

22. How should I handle brand names with special characters? Pass UTF-8 strings as users would type them. The actor passes the string to Meta's search API without sanitization issues for standard UTF-8 input.

23. What is verification in the output? Meta's page verification badge status, when available. null for most non-verified pages.

24. Can I use this to monitor a competitor's advertising presence? Yes — schedule periodic runs and diff adlibrary_url sets to detect new advertiser entities entering a category.

25. What does a run with source_ads_count = 0 indicate? No ads were fetched from the Ad Library for the brand string. Usually means the brand has no active or archived Meta ads, or the string matches nothing in the index.


Best Practices

  • Always validate candidates before passing Page IDs to creative scrapers — use category + likes as signal
  • Store search_brand_name in your warehouse for audit trails when brand naming conventions evolve
  • Version your orchestration when internal actor constants change in forks
  • Use exponential backoff at scheduler level for transient Meta errors
  • Tag Apify runs with { brand_name, source_list, run_date } metadata for traceability in batch jobs
  • Test with niche brands first — validates pipeline before processing large brand registries
  • Archive SUMMARY with each run for week-over-week coverage trend monitoring

Performance & Scalability

FactorGuidance
Single-run scopeTypeahead: 5–15 seconds. Keyword fallback: up to 75 ads; typically 30–90 seconds
Fan-out capacity500+ brands/hour at moderate concurrency with orchestrator
MemoryLightweight HTTP — no browser required
Dedup efficiencyStable key merging prevents duplicate rows across collated results

AI & Automation Workflows

LLM disambiguation: Pass all candidate rows to Claude or GPT. Include CRM context fields (industry, country, known products). Ask for the best match. Ground the decision on the numeric adlibrary_url, not brand name.

Brand registry pipeline: Product team exports brand spreadsheet → fan-out Brand Finder → store Page ID mappings → weekly ad creative refresh → competitive intelligence digest in Slack.

Entity graph construction: Join brand strings from Google News Scraper press mentions with Meta page candidates from this actor. Build a linked-entity graph enriched with advertising presence signals for market intelligence platforms.


Error Handling

ScenarioBehavior
Missing or empty brand_nameINVALID_INPUT error + Actor.fail — no silent defaults
Typeahead timeout or errorAutomatic retry, then keyword-search fallback in auto mode
Unhandled exceptionERROR KV key + Actor.fail for monitoring
Zero resultsClean completion — SUMMARY.total_results = 0, not a failure
Duplicate pagesMerged by stable page_id key — one row per unique page
Deleted pagesFiltered out of typeahead results

Trust & Reliability

Scrapeify positions the Brand Finder as the lightweight discovery gateway to the broader Ad Library ecosystem. Explicit metrics on every run — source_ads_count, pages_scraped, execution_time_seconds — ensure teams know when coverage is thin and can adjust strategy before committing to expensive downstream creative pulls.


Explore the full Scrapeify suite — chain these actors together for end-to-end automation pipelines:

ActorWhat it does
Meta Ad Library ScraperNext step — pull Facebook & Instagram ad creatives by Page ID
Instagram Ad Library ScraperInstagram-only ads — chain after resolving Page ID
WhatsApp Ad ScraperClick-to-WhatsApp ad creatives by Page ID
Amazon ScraperASINs, prices, sponsored flags across 23 marketplaces
Google Maps ScraperLocal business leads, reviews, emails, contacts
Google News ScraperHeadlines, sources, article URLs (up to 2K)
YouTube Video DownloaderVideos & audio to Apify Key-Value Store

Meta and Facebook are trademarks of Meta Platforms, Inc. This actor is not affiliated with or endorsed by Meta.


Built by Scrapeify on Apify.

Powered by AdScrape.