Instagram Profile Phone Number Scraper
Pricing
$19.99/month + usage
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
Maintained by CommunityActor stats
9
Bookmarked
2.8K
Total users
71
Monthly active users
12 days ago
Last modified
Categories
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 Category | Publicly Available | Restricted behind Instagram login |
|---|---|---|
| Post captions with a phone number | Yes, if indexed | — |
| Bio text with a phone number | Yes, if indexed | — |
| Result title & URL from the SERP | Yes | — |
| Private account content | No | Login + accepted follow |
| In-app "Call"/contact button number | Not in SERP snippets | Instagram app only |
| Stories & other ephemeral content | No | Login; expires fast |
| Follower count, username, verified flag | Not returned here | A 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 Name | Description |
|---|---|
platform | The platform label used in the search, e.g. Instagram.com |
keyword | The keyword that produced this result |
title | Title of the matching Google search result |
description | The Google snippet text the phone number was extracted from |
url | The instagram.com URL of the matching result |
phone_number | The extracted phone number, normalized toward E.164 using the selected dial code |
country | The country name parsed from your country input |
dial_code | The 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.
- Open the Actor's page on Apify and click Run, or start it from the API or SDK.
- Add one or more keywords — required. Use niches, business types, usernames, or profile URLs.
- Select the country whose dial code you want to search and filter phone numbers by — required.
- Optionally set maxPhoneNumbers (results per keyword) and a custom proxyConfiguration.
- 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_numberandkeywordto shortlist niche businesses before outreach. - A local marketing agency prospecting new clients uses
countryanddial_codeto confirm a lead is inside their target market before contacting them. - A lead-gen analyst validating a niche uses
titleanddescriptionto see the exact on-platform text a number was mentioned in, such as a "Bookings:" line. - A growth team measuring niche coverage uses
platformandkeywordacross 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
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
keywords | Yes | array | Keywords, usernames, or Instagram profile URLs to search for | ["marketing", "wedding photographer"] |
platform | No | string | Target platform for the site: search. Currently only Instagram is supported (default Instagram) | "Instagram" |
country | Yes | string | Country, shown as "Name (+dial code)", used to build the search query and to normalize/filter phone numbers (default "United Kingdom (+44)") | "United States (+1)" |
maxPhoneNumbers | No | integer | Maximum phone numbers to collect per keyword, 1–10000 (default 20) | 20 |
proxyConfiguration | No | object | Apify 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 ApifyClientclient = 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.
Is it legal to scrape Instagram profile phone numbers?
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.
Related scrapers
| Scraper Name | What it extracts |
|---|---|
| Instagram Phone Number Scraper | Same Google-SERP phone-number search — keyword and country in, phone_number, title, description, and url out |
| Instagram Profile Scraper | Full profile stats — bio, followers, posts count, verification, and latest posts for a list of usernames |
| Instagram B2B Email Scraper | Corporate email patterns from Google-indexed Instagram content, with phone-number extraction as an optional toggle |
| Instagram Related Person Scraper | Accounts Instagram suggests as similar to a given profile, for expanding a lead list |
| Instagram Hashtag Scraper | Posts and reels tagged with a given hashtag |
| Airbnb Phone Number Scraper | The 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.