Phone Number OSINT Scanner
Pricing
Pay per event
Phone Number OSINT Scanner
Batch-scan authorized phone numbers for normalized country, region, carrier, line type, time zones, and public web-footprint investigation links.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
Batch-scan phone numbers you are authorized to investigate and receive normalized numbering-plan metadata plus categorized public web-footprint search queries.
This phone number OSINT Actor is designed for fraud review, security triage, trust-and-safety operations, and repeatable data enrichment. It uses open-source, offline phone metadata and PhoneInfoga-style search-query generation. It does not use paid lookup APIs, private subscriber databases, or credentialed sources.
Public search links are investigation starting points. They are not proof that a page, account, or person belongs to the phone subscriber.
What does Phone Number OSINT Scanner do?
For every unique input number, the Actor can:
- parse international and national phone formats;
- normalize the number to E.164;
- check whether its structure is possible and valid;
- identify the numbering-plan country or territory;
- return an approximate region when offline metadata supports it;
- classify the line as fixed, mobile, VoIP, toll-free, or another known type;
- return original carrier metadata when available;
- list associated time zones;
- generate focused public search queries for social, reputation, disposable-number, general-web, and document research;
- save one consistent JSON record per scanned number.
All metadata lookups run locally inside the Actor container. No phone number is sent to a paid validation or identity service.
Who is this phone number lookup for?
Fraud and risk analysts
Normalize numbers from authorized cases before reviewing public reputation reports, disposable-number directories, or document references.
Trust and safety teams
Turn inconsistent international input into a standard dataset that can be joined with internal case data.
Security researchers
Generate repeatable, categorized search expressions without manually formatting every national and international number variant.
Data operations teams
Process up to 1,000 input entries per run, deduplicate them, and export typed records to spreadsheets, databases, or downstream Actors.
Why use this Actor?
- Batch-first input: scan one authorized number or an international list.
- No paid lookup key: the core metadata route is local and open source.
- Honest nulls: carrier and locality fields stay null when numbering-plan data cannot support an answer.
- Typed invalid results: one malformed number does not stop the rest of a valid batch.
- Focused footprints: select only the public query categories relevant to the investigation.
- Automation-ready output: each unique number produces one stable dataset item.
- Privacy boundary: no private subscriber identity, call records, message content, live location, or ownership claim.
What phone data is returned?
| Field | Meaning |
|---|---|
input | Original supplied phone string |
isValid | Validity against the current numbering plan |
isPossible | Whether length and structure are possible |
error | Per-number parsing or validity explanation |
e164 | Normalized E.164 number |
internationalFormat | Human-readable international format |
nationalFormat | Human-readable national format |
nationalNumber | National significant number |
countryCode | ISO alpha-2 country or territory code |
countryName | English country or territory name |
callingCode | International calling code |
region | Approximate numbering-plan locality or country fallback |
carrier | Original range carrier when available |
lineType | Fixed, mobile, VoIP, toll-free, or another known class |
timeZones | Numbering-plan time zones |
metadataSource | Local metadata route used |
webFootprintQueries | Categorized public search expressions and URLs |
footprintQueryCount | Number of generated queries |
scannedAt | ISO timestamp for the scan |
Public web-footprint categories
The Actor can generate the following query families:
general— exact-number variants across the public web;social_media— focused queries for Facebook, LinkedIn, Instagram, and X;reputation— phone-reporting sites and general fraud-report language;disposable_number— public receive-SMS directory queries;documents— public PDF, Word, spreadsheet, and CSV references.
The Actor generates URLs only. It does not claim that Google will return a result, scrape result pages, bypass access controls, or establish subscriber identity.
How to run a phone number OSINT scan
- Open the Actor in Apify Console.
- Add one or more phone numbers under Phone numbers.
- Prefer E.164 input such as
+1 202-456-1111. - For national-format input, set a two-letter
defaultCountrysuch asUS,GB, orDE. - Confirm I confirm authorized use.
- Keep all footprint categories, or select only the categories needed for the case.
- Set Maximum phone scans to control the number of unique records.
- Click Start.
- Open the Dataset tab to review or export results.
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
phoneNumbers | string array | required | One to 1,000 phone-number strings |
authorizedUse | boolean | false | Required confirmation that every number may be investigated |
defaultCountry | string | none | ISO alpha-2 fallback for national-format numbers |
includeFootprintQueries | boolean | true | Generate categorized Google investigation links |
footprintCategories | string array | all categories | Limit generated query families |
maxItems | integer | 100 | Process at most this many unique numbers |
Example input
{"phoneNumbers": ["+1 202-456-1111","+44 20 7219 3000","+49 30 18 17 0"],"authorizedUse": true,"includeFootprintQueries": true,"footprintCategories": ["general","reputation","documents"],"maxItems": 3}
Phone number OSINT output example
The following abbreviated record reflects current Actor behavior for a publicly listed organization number:
{"input": "+1 202-456-1111","isValid": true,"isPossible": true,"error": null,"e164": "+12024561111","internationalFormat": "+1 202 456 1111","nationalFormat": "(202) 456-1111","nationalNumber": "2024561111","countryCode": "US","countryName": "United States","callingCode": "+1","region": "Washington D.C.","carrier": null,"lineType": "fixed_line_or_mobile","timeZones": ["America/New_York"],"metadataSource": "libphonenumber offline metadata","webFootprintQueries": [{"category": "reputation","source": "Tellows","query": "site:tellows.com (\"+12024561111\" OR \"+1 202 456 1111\" OR \"(202) 456-1111\")","url": "https://www.google.com/search?q=site%3Atellows.com..."}],"footprintQueryCount": 11,"scannedAt": "2026-08-01T12:00:00.000Z"}
How much does it cost to scan phone numbers?
The Actor uses pay-per-event pricing:
- $0.00005 per run for the
startevent; - $0.024 per phone scanned at the BRONZE tier;
- lower per-scan prices apply at higher Apify pricing tiers.
Approximate BRONZE-tier examples:
| Unique phone scans | Approximate charge (USD) |
|---|---|
| 1 | 0.02405 |
| 10 | 0.24005 |
| 100 | 2.40005 |
Duplicates removed before processing do not create additional scan records. Invalid-but-processed phone strings do produce a typed dataset item and count as a scan. Your Apify subscription tier and maximum total charge setting remain the final billing controls.
Batch fraud-review workflow
A practical authorized workflow is:
- Export phone numbers from an internal case-management system.
- Remove numbers outside the approved investigation scope.
- Run this Actor with reputation and disposable-number categories.
- Join results back to the case table using
e164. - Route invalid numbers to data-quality review.
- Review public search links manually or through an approved downstream process.
- Record human conclusions separately from Actor-generated metadata.
This separation prevents generated queries from being mistaken for verified findings.
Scheduling and change comparison
You can schedule the Actor to re-normalize an authorized list when numbering-plan metadata updates. Use Apify Schedules and compare datasets by e164.
The Actor does not monitor search results or claim that a public footprint changed. A recurring run regenerates current metadata and query URLs; downstream systems own any result-page retrieval and change detection.
Export and integrations
Dataset records can be exported as JSON, CSV, Excel, XML, or RSS through Apify storage APIs.
Common integrations include:
- Google Sheets for analyst review;
- Make or Zapier for case-routing automation;
- webhooks for completed-run notifications;
- Python or JavaScript ETL pipelines;
- database enrichment keyed by normalized E.164 number;
- LLM workflows that summarize already-authorized, human-reviewed findings.
Do not send unreviewed search results to automated enforcement decisions.
Run with the Apify API using cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~phone-number-osint-scanner/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"phoneNumbers": ["+1 202-456-1111"],"authorizedUse": true,"footprintCategories": ["reputation"],"maxItems": 1}'
Never commit APIFY_TOKEN to source control. Prefer an Authorization header or a secrets manager in production.
Run with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/phone-number-osint-scanner').call({phoneNumbers: ['+1 202-456-1111'],authorizedUse: true,footprintCategories: ['general', 'reputation'],maxItems: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Run with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/phone-number-osint-scanner').call(run_input={'phoneNumbers': ['+44 20 7219 3000'],'authorizedUse': True,'footprintCategories': ['reputation', 'documents'],'maxItems': 1,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/phone-number-osint-scanner"
Claude Desktop
Add this server entry to the Claude Desktop MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/phone-number-osint-scanner"}}}
Cursor
In Cursor MCP settings, add an HTTP server named apify with this URL:
https://mcp.apify.com?tools=automation-lab/phone-number-osint-scanner
VS Code
In a VS Code client with MCP support, add the same HTTP URL as the apify server in the workspace MCP configuration.
Example prompts:
- “Normalize these authorized support numbers and return country, region, line type, and time zone.”
- “Generate only reputation and disposable-number investigation queries for this approved fraud case list.”
- “Separate invalid numbers from valid E.164 records in this Actor dataset.”
Accuracy and limitations
- Validity means numbering-plan validity, not that a number is active or reachable.
- Carrier metadata describes original number-range allocation and may be stale after number portability.
- Region data is approximate and is not live device location.
- A country calling code can cover several territories.
- Some valid numbers have no carrier, line type, or locality metadata.
- Generated search links can return no results, unrelated results, CAPTCHA pages, or results that change over time.
- The Actor does not access Numverify, Google Custom Search, OVH account data, private subscriber databases, call records, or messaging services.
- The Actor does not identify a private person.
Invalid input and failure behavior
A syntactically bad phone string produces a dataset item with:
isValid: false;isPossible: false;- a clear
errormessage; - null normalized metadata;
- no footprint queries.
The run fails before charging when:
phoneNumbersis missing or empty;- an entry is not a string;
- more than 1,000 entries are supplied;
authorizedUseis nottrue;defaultCountryis unsupported;- a footprint category is unsupported.
Responsible and legal use
Only scan phone numbers you own or are authorized to investigate. Follow applicable privacy, data-protection, employment, consumer-protection, and anti-harassment laws.
Do not use this Actor to:
- stalk, harass, intimidate, or discriminate against a person;
- infer or publish private subscriber identity;
- make eligibility, credit, employment, housing, insurance, or law-enforcement decisions without lawful process and human review;
- bypass access controls, CAPTCHAs, or source terms;
- contact a number without a lawful basis;
- treat generated queries as verified evidence.
You are responsible for your input, downstream searches, retention policy, and conclusions.
Troubleshooting
Why is carrier null?
Fixed-line ranges often have no carrier mapping. Mobile number portability can also make original allocation data incomplete or stale. Null is intentional when the offline dataset cannot support a reliable value.
Why is a valid-looking national number invalid?
Set defaultCountry to the correct two-letter code, or provide the number in E.164 format beginning with + and its calling code.
Why are there no web-footprint queries?
Queries are generated only for valid numbers when includeFootprintQueries is true. Check the selected footprintCategories and the per-number error field.
Does the Actor open every search result?
No. It generates categorized public investigation URLs. It does not scrape Google or target pages.
FAQ
Does this reveal the phone owner?
No. The Actor returns numbering-plan metadata and research links, not private subscriber identity.
Can I scan national-format phone numbers?
Yes. Supply defaultCountry, for example US, GB, or DE.
Are duplicate numbers charged twice?
Exact duplicate input strings are deduplicated before scanning. Equivalent numbers written in different formats are separate input strings and can produce separate records; normalize upstream if this matters.
Can I disable footprint queries?
Yes. Set includeFootprintQueries to false for metadata-only processing.
Is a proxy required?
No. The Actor's metadata and query generation are local and require no proxy.
Can I use this in a scheduled workflow?
Yes, for approved recurring normalization or data-quality checks. The Actor itself does not monitor search-result changes.
Related automation-lab Actors
- Phone Number Validator — use when you need lightweight validation and formatting without OSINT query generation.
- Website Contact Finder — extract publicly listed contact details from authorized websites before normalizing phone records.
Open-source route and attribution
The implementation follows the local metadata and public-query route family popularized by PhoneInfoga. PhoneInfoga is GPL-3.0 licensed. This Actor uses separately packaged open-source libphonenumber metadata components and does not bundle the PhoneInfoga binary, paid scanners, or credentialed services.
Support
For reproducible support, include:
- a redacted input that preserves formatting;
- the run ID;
- the expected country or numbering plan;
- the output field that appears incorrect;
- whether the issue affects one number or an entire batch.
Never post a private individual's phone number in a public support thread.