Instagram Profile Phone Number Scraper: Leads By Area Code avatar

Instagram Profile Phone Number Scraper: Leads By Area Code

Pricing

Pay per usage

Go to Apify Store
Instagram Profile Phone Number Scraper: Leads By Area Code

Instagram Profile Phone Number Scraper: Leads By Area Code

Automate phone number extraction from Instagram with Instagram Profile Phone Number Scraper. The actor scans profiles and external links to pull available contact numbers into structured datasets for CRM enrichment.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

2

Bookmarked

168

Total users

2

Monthly active users

7 hours ago

Last modified

Share

Instagram Scraper — Extract Phone Numbers, Area-Code Leads & Profiles

Instagram Profile Phone Number Scraper: Leads By Area Code finds phone-number leads, area/region matches, and profile snippets tied to instagram.com — without ever visiting Instagram itself. It mines Google's own indexed text for phone-shaped strings that co-occur with your keyword, narrows discovery to cities or regions you name, and normalizes every match to E.164 with a country-code flag. Every response is typed, normalized JSON — no HTML, no selectors, no parsing. After reading this, you'll know exactly what it returns, what it needs as input, and how to run it.

What is Instagram Profile Phone Number Scraper: Leads By Area Code?

Instagram Profile Phone Number Scraper: Leads By Area Code is a Google-SERP text-mining Actor built for local and niche Instagram lead generation. For each search term it builds a Google dork (site:instagram.com "<dial code>" "<keyword>"), optionally appends an OR-group of city/region names to narrow the results, and extracts phone-shaped strings from the matched pages' indexed title and snippet text. No Instagram account, login, or session cookie is required — the Actor never opens instagram.com, it only reads Google Search result pages through Apify's GOOGLE_SERP proxy.

  • Search by keyword, niche, username, or Instagram profile URL (searchTerms)
  • Narrow discovery to specific cities, regions, or neighborhoods (cityRegion), with per-row evidence of which term matched (matchedRegion)
  • Normalize every matched number to E.164 and optionally drop numbers whose country code doesn't match your target (leadCountry, requireCountryMatch)
  • Cap how many leads to collect per search term (maxLeads)
  • Export leads as JSON, CSV, or Excel straight from the Apify dataset — no proxy setup required

What data does Instagram Profile Phone Number Scraper: Leads By Area Code collect?

Every row combines three kinds of data: the phone number itself, the area/country match evidence, and the Google-indexed profile snippet it came from.

Data TypeKey FieldsJSON Field Names
Phone & contact dataraw phone match, E.164-normalized number, target dial codephone_number, normalizedPhone, dial_code
Area & country matchingwhich city/region term matched, country-match flagmatchedRegion, countryMatch, country
Profile / search snippetGoogle result title, snippet text, matched URL, search term usedtitle, description, url, keyword, platform

Need more Instagram data?

If you also need scored, prioritized leads rather than raw matches, Instagram Phone Number Scraper With Lead Scoring ranks Instagram-derived contacts by lead quality. For email-first outreach, Instagram B2B Email Scraper With Business Profile Leads extracts business email addresses and profile leads using a similar keyword-driven approach. Both are Instagram Actors in the same API-Empire catalog and pair naturally with area-code-filtered phone leads for a fuller contact list.

How does Instagram Profile Phone Number Scraper: Leads By Area Code differ from the official Instagram API?

Instagram's own Graph API is built for managing a business's own presence, not for discovering other accounts' contact details. It requires a Meta developer app, an Instagram Business or Creator account linked to a Facebook Page, and App Review approval before most permissions become usable — and even then it exposes data about the accounts you manage, not a searchable index of arbitrary public accounts by keyword or location.

FeatureInstagram Graph APIThis Scraper
Phone number / contact accessNot exposed for third-party accountsExtracts numbers Google has indexed on any public instagram.com page
Account type requiredBusiness or Creator account, linked Facebook PageNone — no Instagram login at all
Approval processMeta developer app + App ReviewNone — run directly from the Apify Store
Keyword search across accountsNot supported (scoped to your own account)Native: one Google dork per search term
Geographic/area filteringNot a native capabilityBuilt-in cityRegion narrowing + matchedRegion + country match
Setup timeApp registration and review cycleProvide search terms and start the run

Use the Graph API when you need to manage or read insights for an account you control. Use this Actor when you need to discover public phone-number leads for a keyword and geography, without anyone's login or Meta's approval.

Why do developers and teams scrape Instagram?

For local and regional sales teams

Sales teams targeting a specific city or borough use searchTerms for their niche ("wedding photographer", "personal trainer") and cityRegion for the exact places they sell into. Because the query narrowing happens at the Google level, every returned row already leans toward the target geography, and matchedRegion shows which named place actually appeared in the snippet — so a rep can sort a call list by neighborhood without re-checking every profile manually.

For lead-generation agencies and freelancers

Agencies building niche contact lists for clients (salons, cafes, contractors) use one Actor run per client vertical and country, setting leadCountry to the client's target market and requireCountryMatch to drop numbers that clearly belong to a different country. Because output is already typed JSON with normalizedPhone in E.164, lists can be handed to a client's CRM or dialer with no manual cleanup step.

For CRM and data-ops teams

Teams maintaining a canonical contact database use normalizedPhone and countryMatch to decide, programmatically, which incoming leads are dial-ready E.164 numbers versus which need manual review (null values). Since the Actor never fabricates a number it can't validate, normalizedPhone: null is a reliable signal to route a row to a review queue instead of a dialer.

For market and location researchers

Analysts mapping business density by area run the same keyword across several cityRegion sets and compare per-region hit counts — a lightweight way to gauge how many phone-carrying Instagram-linked pages Google has indexed for a niche in each place, using only publicly indexed data.

How to scrape Instagram (step by step)

  1. Open the Actor's listing on the Apify Store (API-Empire/instagram-profile-phone-number-scraper-leads-by-area-code) and start a run from the Console, or call it via the Apify API — you only need an Apify account and API token, not an Instagram login.
  2. Add your search terms — keywords, niches, usernames, or profile URLs — to searchTerms.
  3. Set cityRegion to narrow results to specific places, choose leadCountry for the target dial code, and turn on requireCountryMatch if you only want numbers matching that country's code.
  4. Start the run. The Actor builds one Google query per term, pages through results, and normalizes matches automatically.
  5. Download the results as JSON, CSV, or Excel from the run's dataset, or pull them programmatically via the Apify API.

What to do when Instagram changes its structure

This Actor never touches instagram.com's own markup — it depends on Google's search-result-page layout instead. The parser already tries several known Google result-container classes plus a generic "heading inside a link" fallback, and the Actor is maintained to track further Google layout changes. No specific turnaround time is promised.

⬇️ Input

All parameters are optional in the schema, but at least one searchTerms value is required for the Actor to produce any output.

ParameterRequiredTypeDescriptionExample Value
searchTermsNoarrayKeywords, niches, usernames, or profile URLs to search for on Instagram. One Google search is built per term. Also accepts the base keywords key.["cafe", "wedding photographer"]
cityRegionNoarrayNarrows discovery to specific cities, regions, or neighborhoods by adding an OR-group of place names to the Google query. Each matched row reports which term appeared (matchedRegion). Leave empty for no geo narrowing.["London", "Camden"]
requireCountryMatchNoboolean (default false)When on, drops any matched number whose E.164 country code doesn't match leadCountry's dial code. When off, every match is kept and flagged with countryMatch.true
leadCountryNostring enum (default "United Kingdom (+44)")The country whose dial code is used to build the search query, normalize numbers to E.164, and evaluate countryMatch. Also accepts the base country key."United Kingdom (+44)"
maxLeadsNointeger (default 20, min 1, max 10000)Maximum number of phone-number matches to collect per search term before moving to the next one. Also accepts the base maxPhoneNumbers key.25
proxyConfigurationNoobjectApify proxy settings. The Actor always routes searches through the GOOGLE_SERP proxy group regardless of what is set here.{"useApifyProxy": true}

Example input

{
"searchTerms": ["wedding photographer", "@yourbrand"],
"cityRegion": ["London", "Camden"],
"requireCountryMatch": true,
"leadCountry": "United Kingdom (+44)",
"maxLeads": 25,
"proxyConfiguration": { "useApifyProxy": true }
}

The most common mistake is combining requireCountryMatch: true with a narrow cityRegion set: Google indexes relatively few pages that carry both an exact phone number and a specific place name, so a tight combination of the two filters can return zero rows — start broad, then tighten once you've seen what Google actually returns for your terms.

⬆️ Output

Results are written to the Actor's default dataset as typed JSON, one row per matched phone number, exportable as JSON, CSV, or Excel.

Scraped Phone Number Lead

{
"platform": "Instagram.com",
"keyword": "wedding photographer",
"title": "London Wedding Photography Studio (@londonweddingphoto)",
"description": "Award-winning wedding photographer covering Camden and North London. Call +44 20 7946 0958 to book.",
"url": "https://instagram.com/londonweddingphoto",
"phone_number": "+442079460958",
"country": "United Kingdom",
"dial_code": "+44",
"matchedRegion": ["London", "Camden"],
"normalizedPhone": "+442079460958",
"countryMatch": true
}

This is the Actor's full row shape — every key it writes is shown above, matching the dataset's default view exactly.

How many results can you scrape with Instagram Profile Phone Number Scraper: Leads By Area Code?

maxLeads sets the ceiling per search term (default 20, configurable from 1 to 10000); there's no hard cap on how many searchTerms you can submit in one run, so the effective total is maxLeads × number of search terms. Internally, the Actor pages through Google results 10 at a time and stops a given term early after 3 consecutive empty or failed pages, or once maxLeads is reached for that term — whichever comes first. The real-world ceiling isn't the Actor's own limit but Google's index: it can only return numbers Google has already crawled and displayed in a result title or snippet, so a very narrow keyword/region combination may return fewer rows than maxLeads allows regardless of how the Actor is configured.

Integrate Instagram Profile Phone Number Scraper: Leads By Area Code and automate your workflow

Instagram Profile Phone Number Scraper: Leads By Area Code works with any language or tool that can send an HTTP request.

REST API integration

import requests
ACTOR_ID = "your-username~instagram-profile-phone-number-scraper-leads-by-area-code"
run_input = {
"searchTerms": ["cafe"],
"cityRegion": ["London"],
"leadCountry": "United Kingdom (+44)",
"maxLeads": 25,
}
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/run-sync-get-dataset-items",
headers={"Authorization": "Bearer YOUR_APIFY_TOKEN"},
json=run_input,
timeout=300,
)
leads = resp.json()
print(f"{len(leads)} leads, first: {leads[0]['normalizedPhone'] if leads else None}")

Works in Python, Node.js, Go, Ruby, cURL.

MCP for AI agents

The Actor is reachable through Apify's official Actors MCP Server. Use the hosted endpoint at https://mcp.apify.com (OAuth or Authorization: Bearer <APIFY_TOKEN>), or run it locally with npx @apify/actors-mcp-server --actors your-username/instagram-profile-phone-number-scraper-leads-by-area-code, substituting the exact slug shown on the Actor's Store page. Compatible with Claude Desktop, Claude Code, Cursor, and other MCP clients.

Automation platforms (n8n, Make)

In n8n, install the @apify/n8n-nodes-apify community node and use its "Run Actor" operation, pointing it at this Actor and supplying searchTerms and cityRegion in the input body. In Make, use the native Apify app's "Run an Actor and get dataset items" module, mapping the same input fields from an earlier module in the scenario.

Scraping publicly accessible data is generally permitted, and Instagram Profile Phone Number Scraper: Leads By Area Code only returns text that Google has already indexed and displays in a public search result — it never logs in to Instagram or accesses anything behind a login wall. Phone numbers are personal data, so once collected they fall under GDPR, CCPA, and similar regimes: you need a lawful basis for storing and using them, separate from the legality of the scrape itself. Consult legal counsel before any commercial use case involving bulk personal data.

Frequently asked questions

Does Instagram Profile Phone Number Scraper: Leads By Area Code work without an Instagram account?

Yes. It never logs in to or visits instagram.com — it only reads Google Search result pages through the GOOGLE_SERP proxy. You only need an Apify account to run it.

How often is the scraped data updated?

Every run performs a live Google search per keyword; there is no caching layer, so results reflect whatever Google's index shows at the time the run executes.

What happens if a search term or city/region returns no phone numbers?

The Actor logs an empty streak and moves on to the next Google results page, stopping that keyword after 3 consecutive empty or failed pages. It returns whatever rows it did find — including zero — rather than failing the whole run; broadening searchTerms or loosening cityRegion usually surfaces more matches.

Can I scrape private Instagram accounts or non-indexed content?

No. Only text Google has actually crawled and surfaced in a public result title or snippet is ever returned. Private accounts, and any content Google hasn't indexed, cannot appear in the output.

How does area-code / region filtering actually work?

cityRegion adds an OR-group of your place names to the underlying Google query, so Google itself only returns pages that also mention at least one of them; the matched row then reports which term actually appeared in its snippet as matchedRegion. Separately, leadCountry supplies the dial code used to normalize numbers to E.164, and requireCountryMatch (with the resulting countryMatch flag) controls whether numbers with a different country code are dropped or just flagged.

Does Instagram Profile Phone Number Scraper: Leads By Area Code work for AI agent workflows and LLM pipelines?

Yes. It's callable as an HTTP endpoint from any agent framework via the Apify API, and it's also reachable through Apify's Actors MCP Server. Every response is typed JSON with stable field names — no HTML or selectors to parse before passing results to an LLM.

How does it handle Google's anti-bot defenses?

The Actor rotates proxy URLs and randomized browser-like headers (user agent, accept-language) between requests, adds jittered delays, and retries with exponential backoff on blocked or failed responses. A response is only treated as genuinely blocked when it has a block status code, redirects to a /sorry page, or shows block-page text with no real result markup present — avoiding false positives on normal pages that merely contain anti-bot boilerplate in their own scripts.

Does Instagram Profile Phone Number Scraper: Leads By Area Code return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with stable field names — pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool without a parsing step.

Can I use it without managing proxies?

Yes. The Actor always routes searches through Apify's GOOGLE_SERP proxy group automatically, regardless of what you set in proxyConfiguration.

What happens when Google changes its search-result structure?

The Actor is maintained, and its output schema stays stable — field names and types don't change on your end even when the underlying Google markup does. The parser already tries multiple known result-container patterns plus a generic fallback. No numeric turnaround time is promised.

Your feedback

Found a bug or missing a field? We want to know. Report issues or request changes through the Actor's page on the Apify Store, or via API-Empire's support channel — feedback like this directly shapes what gets fixed and maintained.