Instagram Profile Phone Number Scraper avatar

Instagram Profile Phone Number Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Profile Phone Number Scraper

Instagram Profile Phone Number Scraper

Instagram Profile Phone Number Scraper extracts publicly listed phone numbers from Instagram profiles and linked pages. Build targeted contact lists for sales, partnerships, and local outreach campaigns at scale.

Pricing

$19.99/month + usage

Rating

5.0

(4)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

9

Bookmarked

2.8K

Total users

71

Monthly active users

12 days ago

Last modified

Share

Instagram Profile Phone Number Scraper — Numbers, URLs & Country

Instagram Profile Phone Number Scraper searches Google's indexed Instagram results for a keyword and country, then extracts and normalizes any phone number it finds in the result's title or description. Each match returns structured JSON with phone_number, url, title, description, country, and dial_code — no HTML parsing required. Run it on Apify to turn niche keywords into a ready-to-use phone-number lead list.

What is Instagram Profile Phone Number Scraper?

Instagram Profile Phone Number Scraper is an Apify Actor that turns a list of keywords and a target country into a set of publicly indexed Instagram results containing a phone number, returned as structured JSON. It works entirely through Google's search index over Apify's GOOGLE_SERP proxy — no Instagram account, login, or session cookie is required or used anywhere in the Actor. It's built for sales teams, local marketers, and lead-generation developers who want country-targeted phone leads from Instagram without building and maintaining their own SERP scraper.

What Instagram profile phone number data is publicly available to scrape?

Only what Google has already indexed is accessible without an Instagram login.

Data CategoryPublicly AvailableRestricted behind Instagram login
Post captions with a phone numberYes, if indexed
Bio text with a phone numberYes, if indexed
Result title & URL from the SERPYes
Private account contentNoLogin + accepted follow
In-app "Call"/contact button numberNot in SERP snippetsInstagram app only
Stories & other ephemeral contentNoLogin; expires fast
Follower count, username, verified flagNot returned hereA dedicated profile scraper

Instagram Profile Phone Number Scraper only returns publicly visible data. Nothing behind a login wall.

What data can I extract with Instagram Profile Phone Number Scraper?

Instagram Profile Phone Number Scraper returns one flat record per matched phone number, combining the extracted number with the Google search result it came from — these are the only 8 fields the Actor produces.

Field NameDescription
platformThe platform label used in the search, e.g. Instagram.com
keywordThe keyword that produced this result
titleTitle of the matching Google search result
descriptionThe Google snippet text the phone number was extracted from
urlThe instagram.com URL of the matching result
phone_numberThe extracted phone number, normalized toward E.164 using the selected dial code
countryThe country name parsed from your country input
dial_codeThe dial code parsed from your country input, e.g. +44, +1-268

Search & source fields

platform, keyword, title, description, and url identify where a phone number was found and what search produced it.

Phone & locale fields

phone_number, country, and dial_code carry the normalized number itself and the locale it was matched against.

🤖 Add-on: Need additional Instagram data?

Instagram Profile Phone Number Scraper only returns phone numbers and the SERP snippet they came from — not follower counts, bios, or usernames as dedicated fields. For full profile stats, run Instagram Profile Scraper alongside it. To map the accounts Instagram suggests as similar to a lead, use Instagram Related Person Scraper. For corporate email patterns using the same Google-search approach — with phone extraction as an optional toggle — see Instagram B2B Email Scraper.

Why not build this yourself?

Instagram's own Graph API only returns data for accounts you or your business manage through an approved integration — it has no endpoint that searches for or returns a phone number from an arbitrary profile or keyword, so there's no official API comparison to make here.

Building this yourself means maintaining a Google-SERP scraper: rotating user-agents and proxy IPs to avoid the block and CAPTCHA pages Google serves to automated traffic, keeping the HTML selectors current as Google's result markup shifts, and paying for proxy bandwidth on every retry. Instagram Profile Phone Number Scraper already handles proxy rotation through Apify's GOOGLE_SERP proxy group, retries with backoff on blocked responses, and normalizes whatever phone format Google's snippet shows into a consistent E.164-style output, so you don't have to build or maintain that pipeline yourself.

How to use Instagram Profile Phone Number Scraper

Instagram Profile Phone Number Scraper runs directly on Apify — there's no separate signup or API key beyond your Apify account.

  1. Open the Actor's page on Apify and click Run, or start it from the API or SDK.
  2. Add one or more keywords — required. Use niches, business types, usernames, or profile URLs.
  3. Select the country whose dial code you want to search and filter phone numbers by — required.
  4. Optionally set maxPhoneNumbers (results per keyword) and a custom proxyConfiguration.
  5. Start the run, then export the dataset as JSON, CSV, or Excel.

How to scale to bulk Instagram profile phone number extraction

keywords accepts an array, so a single run can search any number of niches, usernames, or profile URLs at once — each keyword is processed in turn and every output row is tagged with the keyword that produced it. Because country is a single value per run, covering multiple countries means starting one run per country rather than mixing dial codes in one run; queue a run per country from the API for full multi-country coverage.

What can you do with Instagram profile phone number data?

  • A sales development rep building a cold-call list uses phone_number and keyword to shortlist niche businesses before outreach.
  • A local marketing agency prospecting new clients uses country and dial_code to confirm a lead is inside their target market before contacting them.
  • A lead-gen analyst validating a niche uses title and description to see the exact on-platform text a number was mentioned in, such as a "Bookings:" line.
  • A growth team measuring niche coverage uses platform and keyword across several runs to see which niches have the most Google-indexed contact numbers.
  • An AI agent building a lead-qualification pipeline feeds the JSON output — phone_number, title, description — directly into an LLM prompt to draft a personalized first outreach message per lead, with no parsing step in between.

How does Instagram Profile Phone Number Scraper handle rate limits and blocking?

Every search request is routed through Apify's GOOGLE_SERP proxy group, which the Actor enforces regardless of your own proxy settings. Each request uses a randomized user-agent and accept-language header, with a jittered 1–2 second delay before sending and a 3–6 second delay between retries. If Google returns a non-200 status, redirects to a /sorry/ block page, or serves block-page phrasing with no genuine result markup present, the request is treated as blocked and retried with a freshly rotated proxy URL, up to 3 attempts per page. If a keyword returns 3 consecutive empty or failed pages, the Actor stops that keyword and moves on to the next one rather than retrying indefinitely. No CAPTCHA solving is performed — if Google keeps blocking every retry for a keyword, that keyword returns fewer results (or none) instead of hanging the run.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
keywordsYesarrayKeywords, usernames, or Instagram profile URLs to search for["marketing", "wedding photographer"]
platformNostringTarget platform for the site: search. Currently only Instagram is supported (default Instagram)"Instagram"
countryYesstringCountry, shown as "Name (+dial code)", used to build the search query and to normalize/filter phone numbers (default "United Kingdom (+44)")"United States (+1)"
maxPhoneNumbersNointegerMaximum phone numbers to collect per keyword, 1–10000 (default 20)20
proxyConfigurationNoobjectApify proxy configuration; the Actor always searches through the GOOGLE_SERP proxy group{"useApifyProxy": true}

Example input

{
"keywords": ["wedding photographer", "real estate agent"],
"platform": "Instagram",
"country": "United States (+1)",
"maxPhoneNumbers": 20,
"proxyConfiguration": {
"useApifyProxy": true
}
}

⬆️ Output

Each run writes one flat, typed JSON record per matched phone number to the Actor's dataset, with the same 8 fields on every row. Download results as JSON, CSV, or Excel directly from the dataset, or pull them programmatically through the Apify API.

Example output

{
"platform": "Instagram.com",
"keyword": "wedding photographer",
"title": "Jane Doe Photography (@janedoephoto) • Instagram",
"description": "Wedding & portrait photographer based in Austin. Bookings: +1 202 555 0148",
"url": "https://www.instagram.com/janedoephoto/",
"phone_number": "+12025550148",
"country": "United States",
"dial_code": "+1"
}

How does it work?

For each keyword, the Actor builds a Google search query in the form site:instagram.com "<dial code>" "<keyword>" and pages through the results over Apify's GOOGLE_SERP proxy. It keeps only results whose link points to instagram.com, then scans that result's title and description snippet — plus any tel: link — for a phone-number-shaped string. A candidate is normalized toward E.164 and kept only if it has a plausible number of digits (8–15) and, once normalized, starts with the dial code for your selected country; anything shorter, longer, or from the wrong country is discarded rather than guessed at. Matching results are de-duplicated by URL. Because parsing works off Google's stable result markup rather than Instagram's own page structure, the output schema doesn't change even when Instagram's site layout does.

Integrations

Instagram Profile Phone Number Scraper works alongside the tools you already use to manage leads and outreach.

Calling Instagram Profile Phone Number Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("scraper-engine/instagram-profile-phone-number-scraper").call(run_input={
"keywords": ["wedding photographer"],
"country": "United States (+1)",
"maxPhoneNumbers": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["phone_number"], item["url"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

MCP integration for AI agents

Instagram Profile Phone Number Scraper is reachable through Apify's Actors MCP Server, which exposes Actors on Apify Store as callable tools for MCP-compatible clients such as Claude Desktop and Claude Code. Register it from this Actor's page in Apify Console, or run npx @apify/actors-mcp-server configured with this Actor's store ID.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node (or the community Apify node) pointed at this Actor's run endpoint, with your Apify API token in the Authorization header. In Make, use the Apify app's "Run Actor and get dataset items" module and map keywords and country from earlier scenario steps. In LangChain, call the same Apify API endpoint from a custom Tool, or load results with the community Apify dataset loader, so an agent can pull fresh phone-number leads mid-conversation.

Scraping publicly available Instagram content is generally lawful, though Instagram's own Terms of Service restrict automated data collection. Instagram Profile Phone Number Scraper only returns data already visible in Google's public search index — no login, no private profiles, no bypassing of any access wall. A phone number is personal data, so storing or using the numbers this Actor returns falls under regimes like GDPR (EU/UK) and CCPA (California): you need a lawful basis for storing them, must honor deletion and opt-out requests, and should not use them for unsolicited bulk marketing where consent is required. Consult legal counsel if your use case involves bulk storage of personal data or cross-border transfer.

Frequently asked questions

What Instagram phone number fields does Instagram Profile Phone Number Scraper return?

It returns phone_number, url, title, description, and keyword as the top fields, plus platform, country, and dial_code for context — see the full data fields table above.

Does Instagram Profile Phone Number Scraper require an Instagram account or login?

No. It searches Google's public index of instagram.com pages; no Instagram username, password, or session cookie is used anywhere in the Actor.

How many phone numbers can I extract in one run?

maxPhoneNumbers accepts 1 to 10,000 per keyword, and every keyword in your keywords array is processed in the same run, so total output scales with how many keywords you add.

What happens if a keyword returns no phone numbers?

If Google has no indexed instagram.com page containing both your keyword and the selected country's dial code in visible text, the Actor logs an empty result for that keyword and moves on to the next one — it does not fail the run or fabricate a number. Private profiles and content Google hasn't crawled will simply not appear.

Can I scrape multiple Instagram keywords at once?

Yes. keywords accepts an array, so a single run works through every keyword you list and tags each output row with the keyword that produced it.

Does Instagram Profile Phone Number Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes. It's callable as a plain HTTP endpoint through the Apify API from any agent framework, and it's also reachable through Apify's Actors MCP Server for MCP-compatible clients like Claude Desktop and Claude Code.

What's the difference between Instagram Profile Phone Number Scraper and Instagram Phone Number Scraper?

Functionally, both run the same Google-SERP keyword-and-country search and return the same 8-field schema (platform, keyword, title, description, url, phone_number, country, dial_code). Neither restricts results to profile pages only — both surface any indexed instagram.com result (profile bio or post caption) that matches your keyword and dial code. Pick either listing based on which fits your existing workflow.

Does Instagram Profile Phone Number Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across every run — no HTML, no CSS selectors to write. Pass it straight into an LLM prompt, index it into a vector store, or feed it to an agent tool.

What happens when Google changes its search layout or anti-bot system?

The Actor is maintained against Google's current SERP markup and block-page behavior, and the output schema is designed to stay stable across those changes. No specific update turnaround is guaranteed.

Can I use Instagram Profile Phone Number Scraper without managing proxies or browser infrastructure?

Yes. The Actor always routes searches through Apify's GOOGLE_SERP proxy group and rotates the proxy URL automatically on retries — you don't need to supply or manage your own proxy list unless you want to override the default.

Which fields work best for AI training data and RAG indexing?

For RAG, index title and description — they're the highest-information free-text fields, carrying the on-platform context a number was found in. For structured features, phone_number, country, and dial_code return as consistently typed strings across every record, since a row is only ever pushed once a valid, correctly-prefixed number has been found.

Scraper NameWhat it extracts
Instagram Phone Number ScraperSame Google-SERP phone-number search — keyword and country in, phone_number, title, description, and url out
Instagram Profile ScraperFull profile stats — bio, followers, posts count, verification, and latest posts for a list of usernames
Instagram B2B Email ScraperCorporate email patterns from Google-indexed Instagram content, with phone-number extraction as an optional toggle
Instagram Related Person ScraperAccounts Instagram suggests as similar to a given profile, for expanding a lead list
Instagram Hashtag ScraperPosts and reels tagged with a given hashtag
Airbnb Phone Number ScraperThe same Google-SERP phone-number search pattern applied to Airbnb listings

Your feedback

Found a bug or a phone number that didn't extract cleanly? Let us know so we can take a look — feedback like this is what keeps this Actor accurate as Google's SERP markup and block pages change. Reach out via the Actor's Issues tab on Apify Console.