PhoneInfoga — Phone Number OSINT Scanner
Pricing
from $4.99 / 1,000 phone scanneds
PhoneInfoga — Phone Number OSINT Scanner
Reverse phone lookup powered by PhoneInfoga. Detects carrier, country, line type and OSINT footprints for any international number. Integrates Numverify, Google Search and OVH. Free to start.
Pricing
from $4.99 / 1,000 phone scanneds
Rating
0.0
(0)
Developer
DataCach
Actor stats
0
Bookmarked
10
Total users
5
Monthly active users
4 days ago
Last modified
Categories
Share
Scan international phone numbers to gather carrier information, country of origin, line type, and OSINT footprints from multiple public sources. Built on top of PhoneInfoga — one of the most advanced open-source frameworks for phone number intelligence and reconnaissance.
No API key is required to run. The free scanners (local, googlesearch, ovh) work out of the box and return country detection, carrier registry lookups, and curated Google Dork search URLs. Adding a Numverify API key unlocks carrier validation, line type detection, and active status checks.
Features
- Batch scanning — scan up to 500 phone numbers in a single run (paid accounts)
- Multiple scanners — local parser, Numverify carrier API, Google Dork URL generator, OVH Telecom ownership check
- No required API keys — three scanners work without any configuration
- Parallel execution — numbers are scanned concurrently (configurable concurrency)
- Automatic scanner filtering — scanners with missing credentials are silently skipped; the run never fails because of a missing API key
- Structured output — one JSON record per number pushed to the Apify dataset
Free vs paid accounts
The Actor automatically detects your Apify account plan and applies the following limits:
| Free plan | Paid plan | |
|---|---|---|
| Max phone numbers per run | 10 | 500 |
| Max concurrency | 1 (sequential) | 16 |
| All scanners | ✅ | ✅ |
| Numverify API key support | ✅ | ✅ |
If your input contains more than 10 numbers on a free account, the list is silently truncated to the first 10 and a warning is logged. No error is thrown — the run completes normally with the allowed subset.
Upgrade your Apify plan at apify.com/pricing to remove these limits.
Use cases
- OSINT investigations — gather public information about an unknown phone number across social media, fraud databases, and telecom registries
- Lead verification — confirm a phone number is real and active before outreach
- Fraud detection — check carrier, line type, and reputation before processing a number
- Batch carrier lookup — scan hundreds of numbers and export results to CSV or JSON via the Apify API
- Security research — identify VoIP, disposable, or premium-rate numbers
Scanners
| Scanner | Requires | Free | What it returns |
|---|---|---|---|
local | Nothing | Unlimited | Number formats (E164, local, international), country code, carrier |
googlesearch | Nothing | Unlimited | Google Dork URLs grouped by category (social media, fraud sites, directories, documents) |
ovh | Nothing | Unlimited | Whether the number belongs to OVH Telecom's VoIP infrastructure (Europe only) |
numverify | API key | 100 req/month | Line type (mobile, landline, etc.), carrier name, active status |
local
Parses the phone number and returns all available number formats plus the country and carrier when available.
Output fields:
| Field | Description |
|---|---|
rawLocal | Local format without formatting (e.g. 0679368229) |
local | Local format with formatting (e.g. 06 79 36 82 29) |
e164 | E164 international format (e.g. +33679368229) |
international | International format without + (e.g. 33679368229) |
countryCode | Numeric country calling code (e.g. 33) |
country | ISO 3166-1 alpha-2 country code (e.g. FR) |
carrier | Carrier name if available |
googlesearch
Generates pre-built Google Dork search URLs targeting specific sites for the phone number. The URLs are returned for manual investigation — open them in a browser to see actual search results. No page content is fetched automatically.
URL categories:
| Category | Sites targeted |
|---|---|
socialMedia | Facebook, Twitter/X, LinkedIn, Instagram, VK |
disposableProviders | SMS receive services (hs3x.com, receive-sms-now.com, …) |
reputation | Scam/fraud report sites (whosenumber.info, findwhocallsme.com, …) |
individuals | People directories (numinfo.net, sync.me, pastebin.com, …) |
general | Open web search + document search (PDF, DOCX, XLS, …) |
numverify
Queries the Number Verification API (apilayer.com) to confirm whether the number is active and to retrieve its line type and carrier.
Requires a numverifyApiKey. Free tier: 100 requests/month — no credit card required. See how to get the key.
Output fields:
| Field | Description |
|---|---|
valid | Whether the number is considered valid and active |
number | Number digits without + prefix |
localFormat | Number in local format |
internationalFormat | Number with + and country code |
countryPrefix | Country calling code (e.g. +33) |
countryCode | ISO 3166-1 alpha-2 country code |
countryName | Full country name |
carrier | Carrier name |
lineType | mobile, landline, special, toll_free, premium_rate, or unknown |
ovh
Queries the OVH Telecom API (no key needed) to check whether the number is registered under OVH's VoIP infrastructure. Supported countries: France (FR), Belgium (BE), Great Britain (GB), Spain (ES), Switzerland (CH). Numbers from other countries are skipped with skipped: true.
Output fields:
| Field | Description |
|---|---|
found | true if the number is registered under OVH Telecom |
numberRange | OVH number range block (e.g. 036517xxxx) |
city | City associated with the range (e.g. Abbeville) |
Input
Minimal input — no API keys required
{"phoneNumbers": ["+33679368229", "+15551234567"]}
Full input example
{"phoneNumbers": ["+33679368229", "+15551234567", "+41764181234"],"numverifyApiKey": "YOUR_NUMVERIFY_KEY","disabledScanners": ["ovh"],"maxConcurrency": 5}
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
phoneNumbers | string[] | Yes | — | Phone numbers to scan. Use E164 (+33679368229) or international format. Max 500 per run (10 on free accounts). Country code is mandatory. |
numverifyApiKey | string | No | — | API key from apilayer.com. Enables the numverify scanner. |
disabledScanners | string[] | No | [] | Scanners to skip. Valid values: local, numverify, googlesearch, ovh. |
maxConcurrency | integer | No | 5 | Numbers scanned simultaneously. Min 1, max 16. Capped at 1 on free accounts regardless of this value. Values above 10 may trigger rate limits on the Numverify free tier. |
Accepted phone number formats
All of the following are treated as the same number:
+33679368229+33 679368229+33 6 79 36 82 2933679368229
The Actor strips spaces, dashes, and special characters automatically. The country calling code (e.g. +33 for France, +1 for the US) is always required. Find your country code at countrycode.org.
Output
One JSON record is written to the Apify dataset for each phone number.
Successful scan
{"phoneNumber": "+33679368229","numberInfo": {"valid": true,"rawLocal": "0679368229","local": "06 79 36 82 29","e164": "+33679368229","international": "33679368229","countryCode": 33,"country": "FR","carrier": ""},"local": {"rawLocal": "0679368229","local": "06 79 36 82 29","e164": "+33679368229","international": "33679368229","country": "FR","carrier": ""},"numverify": {"valid": true,"number": "33679368229","localFormat": "0679368229","internationalFormat": "+33679368229","countryPrefix": "+33","countryCode": "FR","countryName": "France","carrier": "Orange","lineType": "mobile"},"googlesearch": {"socialMedia": [{ "url": "https://www.google.com/search?q=site%3Afacebook.com+intext%3A%2233679368229%22" },{ "url": "https://www.google.com/search?q=site%3Atwitter.com+intext%3A%2233679368229%22" }],"disposableProviders": [ { "url": "..." } ],"reputation": [ { "url": "..." } ],"individuals": [ { "url": "..." } ],"general": [ { "url": "..." } ]},"ovh": {"found": false,"skipped": true,"reason": "Country not supported by OVH scanner (only FR, BE, GB, ES, CH)"},"scannedAt": "2026-05-02T10:00:00.000Z"}
Failed validation
If a number cannot be parsed (missing country code, unsupported format), the record contains an error field:
{"phoneNumber": "not-a-number","error": "422 Unprocessable Entity","scannedAt": "2026-05-02T10:00:00.000Z"}
Output fields reference
| Field | Type | Description |
|---|---|---|
phoneNumber | string | The input number exactly as provided |
numberInfo | object | Parsed number: formats, country code, E164, carrier |
local | object | null | Local scanner result. null if the scanner was skipped |
numverify | object | null | Numverify scanner result. null if skipped or no API key provided |
googlesearch | object | null | Google Dork URLs by category. null if skipped |
ovh | object | OVH Telecom result. If skipped: true, the number's country is not supported |
scannedAt | string | ISO 8601 UTC timestamp of when the scan completed |
How to get a Numverify API key
The numverify scanner uses the Number Verification API from apilayer.com. The free plan includes 100 requests per month with no credit card required.
Note: apilayer.com has two number verification products. This Actor uses the legacy API — the key comes from the same apilayer.com dashboard and the Actor handles routing automatically. You only need to copy the key as shown below.
Step-by-step
Step 1 — Create a free account
Go to apilayer.com and click Sign Up. You can register with Google, GitHub, or email. No credit card is required.
Step 2 — Open the Number Verification API page
After logging in, go to apilayer.com/marketplace/number_verification-api.
Step 3 — Subscribe to the free plan
Click Subscribe for free and select the Free plan (100 requests/month). Confirm the subscription.
Step 4 — Copy your API key
After subscribing, scroll down to the API Key section on the product page. Your key is a long alphanumeric string:
aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcd
Click the copy icon next to it.
Step 5 — Add the key to the Actor
In the Apify Console input form, paste the key into the Numverify API key field. If running locally, add it to storage/key_value_stores/default/INPUT.json:
{"phoneNumbers": ["+33679368229"],"numverifyApiKey": "YOUR_KEY_HERE"}
Step 6 — Verify it works
Run the Actor. In the dataset output, each record will have a populated numverify object with valid, lineType, and carrier fields.
Free tier limit: The free plan allows 100 requests per month total. Scanning more numbers than your remaining quota will cause those scans to fail silently (the
numverifyfield in those records will benull). Upgrade to a paid plan at apilayer.com or limit the batch size to stay within the free allowance.
Costs and limits
| Scanner | Free limit | Notes |
|---|---|---|
local | Unlimited | No external API required |
googlesearch | Unlimited | Generates URLs only, no fetching |
ovh | Unlimited | European numbers only |
numverify | 100 req/month | Free at apilayer.com; paid plans available |
Apify platform usage is billed separately based on compute time and memory. A typical scan of 10 numbers completes in under 30 seconds.
Troubleshooting
The Actor fails immediately at startup
Re-deploy with apify push to ensure the latest build is used and try again.
numverify scanner is always skipped
Verify that numverifyApiKey is filled in the Actor input and that it is the key from the Number Verification API product page on apilayer.com — not from a different product.
numverify returns errors after some scans
You have likely exceeded the free tier quota (100 requests/month). Log in to apilayer.com and check My Account → Subscriptions to see your remaining requests. Either wait for the monthly quota reset or upgrade to a paid plan.
Number validation fails
The number is missing the country calling code or is in an unsupported format. Every number must start with the country calling code — for example +1 for the US, +44 for the UK, +55 for Brazil. See countrycode.org to find the right code.
ovh always shows skipped: true
Expected for non-European numbers. The OVH scanner only covers France (FR), Belgium (BE), Great Britain (GB), Spain (ES), and Switzerland (CH).
googlesearch URLs return no results in the browser
This is normal for unlisted or private numbers. The googlesearch scanner generates best-effort Dork URLs — if a number has no public presence on a given site, the search simply returns no results.
Disclaimer and legal notice
Read this before using the Actor.
Intended use
This Actor is provided strictly for legitimate, lawful purposes — including OSINT research, fraud prevention, security auditing, and investigative journalism where permitted by applicable law.
You are solely responsible for ensuring that your use of this tool complies with all applicable laws, regulations, and third-party terms of service in your jurisdiction.
Prohibited uses
The following uses are explicitly prohibited:
- Stalking, harassment, or surveillance of individuals without their knowledge and legal authority to do so
- Building profiles or databases of individuals' personal information without a lawful basis
- Spam, cold calling, or unsolicited marketing using data collected with this tool
- Bypassing privacy protections or accessing information in violation of a person's reasonable expectation of privacy
- Any use that violates applicable laws, including anti-stalking laws, wiretapping laws, or consumer protection regulations
GDPR and data protection
A phone number is personal data under the General Data Protection Regulation (GDPR) (EU Regulation 2016/679) and equivalent laws in other jurisdictions (e.g. UK GDPR, CCPA, LGPD). If you are scanning phone numbers belonging to individuals in the European Economic Area (EEA) or the UK, the following obligations apply to you as the data controller:
| Obligation | What it means in practice |
|---|---|
| Lawful basis (Art. 6 GDPR) | You must have a valid legal ground before processing the number — e.g. legitimate interest, legal obligation, or explicit consent. Curiosity is not a lawful basis. |
| Purpose limitation (Art. 5(1)(b)) | Data collected must only be used for the specific purpose it was gathered for. You cannot repurpose results for unrelated activities. |
| Data minimisation (Art. 5(1)(c)) | Only scan the numbers you genuinely need. Do not scan numbers in bulk speculatively. |
| Storage limitation (Art. 5(1)(e)) | Do not retain the output dataset longer than necessary for your stated purpose. Delete results when they are no longer needed. |
| Data subject rights (Art. 15–22) | Individuals have the right to access, correct, and erase their personal data. If a data subject submits a request, you must be able to act on it. |
| Third-country transfers (Art. 44–49) | Running this Actor on the Apify platform stores results on Apify infrastructure. Review Apify's data processing terms before processing EEA personal data. |
This Actor does not collect, store, or transmit any personal data on its own beyond what you explicitly provide as input. The Apify dataset produced by a run is stored in your Apify account and subject to your own data retention policies.
Accuracy disclaimer
- Results are aggregated from public, third-party sources and may be outdated, incomplete, or incorrect
- The Actor does not guarantee that a number is currently active, assigned, or owned by any particular individual
- Do not use results as the sole basis for decisions that affect individuals (credit decisions, employment screening, law enforcement actions, etc.)
License
The underlying tool, PhoneInfoga, is licensed under the GNU General Public License v3.0.