Phone Number OSINT Scanner avatar

Phone Number OSINT Scanner

Pricing

Pay per event

Go to Apify Store
Phone Number OSINT Scanner

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

7 days ago

Last modified

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?

FieldMeaning
inputOriginal supplied phone string
isValidValidity against the current numbering plan
isPossibleWhether length and structure are possible
errorPer-number parsing or validity explanation
e164Normalized E.164 number
internationalFormatHuman-readable international format
nationalFormatHuman-readable national format
nationalNumberNational significant number
countryCodeISO alpha-2 country or territory code
countryNameEnglish country or territory name
callingCodeInternational calling code
regionApproximate numbering-plan locality or country fallback
carrierOriginal range carrier when available
lineTypeFixed, mobile, VoIP, toll-free, or another known class
timeZonesNumbering-plan time zones
metadataSourceLocal metadata route used
webFootprintQueriesCategorized public search expressions and URLs
footprintQueryCountNumber of generated queries
scannedAtISO 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

  1. Open the Actor in Apify Console.
  2. Add one or more phone numbers under Phone numbers.
  3. Prefer E.164 input such as +1 202-456-1111.
  4. For national-format input, set a two-letter defaultCountry such as US, GB, or DE.
  5. Confirm I confirm authorized use.
  6. Keep all footprint categories, or select only the categories needed for the case.
  7. Set Maximum phone scans to control the number of unique records.
  8. Click Start.
  9. Open the Dataset tab to review or export results.

Input parameters

InputTypeDefaultDescription
phoneNumbersstring arrayrequiredOne to 1,000 phone-number strings
authorizedUsebooleanfalseRequired confirmation that every number may be investigated
defaultCountrystringnoneISO alpha-2 fallback for national-format numbers
includeFootprintQueriesbooleantrueGenerate categorized Google investigation links
footprintCategoriesstring arrayall categoriesLimit generated query families
maxItemsinteger100Process 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 start event;
  • $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 scansApproximate charge (USD)
10.02405
100.24005
1002.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:

  1. Export phone numbers from an internal case-management system.
  2. Remove numbers outside the approved investigation scope.
  3. Run this Actor with reputation and disposable-number categories.
  4. Join results back to the case table using e164.
  5. Route invalid numbers to data-quality review.
  6. Review public search links manually or through an approved downstream process.
  7. 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 os
from apify_client import ApifyClient
client = 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().items
print(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 error message;
  • null normalized metadata;
  • no footprint queries.

The run fails before charging when:

  • phoneNumbers is missing or empty;
  • an entry is not a string;
  • more than 1,000 entries are supplied;
  • authorizedUse is not true;
  • defaultCountry is unsupported;
  • a footprint category is unsupported.

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.

  • 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.