Mobile Phone Waterfall avatar

Mobile Phone Waterfall

Pricing

from $17.00 / 1,000 mobile founds

Go to Apify Store
Mobile Phone Waterfall

Mobile Phone Waterfall

Find mobile phone numbers for your contacts by chaining your own Prospeo, Lusha, ContactOut, and FullEnrich keys. One flat row per contact with the number, line type, country, Do Not Call flag, and the provider and credits used. No keys stored.

Pricing

from $17.00 / 1,000 mobile founds

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

๐Ÿ“ฑ What can Mobile Phone Waterfall do?

Give it contacts and it finds a mobile phone number for each one by calling the phone providers you already pay for, one after another, until one returns a number. Every row says which provider found it, what line type it is, and how many of your credits it spent.

Bring your own keys. You supply your own Prospeo, Lusha, ContactOut, or FullEnrich key, any one of them or all four. Mamba Labs supplies no keys and stores none. You pay your providers directly at your own plan's rate.

๐Ÿ“ฆ What you getโš™๏ธ Features and integrations
๐Ÿ“ž A mobile number in E.164 format, or an honest null
๐Ÿท๏ธ Line type, country, and the Do Not Call flag where the provider reports them
๐Ÿงพ Per provider credits on every row
๐Ÿ”ข 25 fields, one flat row per contact, always
๐Ÿ”— Four providers in the order you set
๐Ÿ”Œ A circuit breaker per provider on a bad key or an empty balance
๐Ÿ›‘ Your own credit cap and an Apify charge cap
โฌ‡๏ธ Export to JSON, CSV, Excel, HTML, or XML

๐Ÿšซ This is not a data provider and sells you no phone data. It runs the accounts you already have. With no key supplied it still runs, says which providers were unavailable, charges only the run start fee ($0.0005), and exits cleanly.

๐Ÿ’ก Why use Mobile Phone Waterfall?

No single provider finds every mobile. Running two or three by hand means exporting, matching, and paying twice for the same person. This calls the next provider only when the one before it came back empty, so a found contact never spends credits on a second provider.

If you wantRead these fields
The numbermobile_phone, phone_line_type, phone_country
Whether you may dial itphone_dnc (Lusha reports it; null means not reported)
Which provider earned its keepfound_by_provider, found_by, chain_position
What the contact cost you at your providersprovider_credits_used, providers_attempted_json
Run totalsrun_summary_json on the summary row

๐Ÿ”Œ Supported providers

ProviderYour key fieldIdentifiers it takesCredits per mobile, as documented
Prospeoprospeo_api_keyLinkedIn URL, name plus domain, email, name plus company10 per mobile found, a miss is free
Lushalusha_api_keyLinkedIn URL, email, first and last name plus domain or companyone search charge plus a phone charge per revealed phone
ContactOutcontactout_api_keyLinkedIn profile URL (/in/ or /pub/) onlyone phone credit when a phone comes back
FullEnrichfullenrich_api_keyfirst and last name plus company domain, LinkedIn URL optional10 per mobile found, landlines free

The default order is Prospeo, Lusha, ContactOut, FullEnrich. FullEnrich runs last because it is itself a waterfall over 20 plus sources and takes up to two and a half minutes per contact. Change the order with provider_order. A provider with no key is skipped and reported, never an error.

Live verification. The Prospeo path has been run live on a real key (2026-10-19). The Lusha, ContactOut, and FullEnrich steps are built to each provider's documented API but have not yet been run on a live key. Every run summary lists them under providers_not_live_verified.

A LinkedIn URL is passed to the provider as an identifier. The actor never opens LinkedIn.

๐Ÿ“‹ What data can Mobile Phone Waterfall extract?

25 fields per row. One row per input contact, always, including the ones where nothing was found, plus one run summary row.

FieldWhat it holds
contact_idYour own id or contact_id, echoed back, or a row id
input_full_name, input_first_name, input_last_nameThe name you supplied
input_company_domain, input_company_nameThe company you supplied
input_linkedin_url, input_emailThe identifiers you supplied
mobile_phoneThe number in E.164, for example +14155550123, or null
phone_line_typemobile, landline, voip, or unknown
phone_countryTwo letter country code of the number
phone_dncTrue when the provider flags the number Do Not Call
phone_statusfound, not_found, no_usable_identifier, no_provider_available, skipped_spend_cap, skipped_free_plan_cap, not_started_charge_limit, or a summary state
found_by_provider, found_byThe provider, and the exact registry entry, that answered
chain_positionWhich position in your order found it
providers_calledHow many providers were actually called for this contact
providers_attempted_jsonEvery provider step with its outcome, credits, and time
provider_credits_usedCredits this contact spent on your accounts
is_summary_row, run_summary_jsonThe run summary row and its totals
row_status, error_reasonok, no_match, skipped, error, or summary, and why
billable_events_jsonThe Apify events this row charged, [] when free
checked_atWhen the row was written

โฌ‡๏ธ Input

FieldWhat it does
contactsOne object per person: full_name, first_name, last_name, company_domain, company_name, linkedin_url, email, and your own id. Also accepted as a JSON string or one line per person.
full_name, company_domain, linkedin_url, emailOne person per run, the shape a Clay row sends
prospeo_api_key, lusha_api_key, contactout_api_key, fullenrich_api_keyYour keys. Secret fields: never logged, stored, or written to the dataset
provider_orderProvider names in call order. Empty means the default order
mobile_onlyOn by default: a landline or VoIP number does not end the chain. Numbers without a reported line type are kept as unknown
max_contactsCeiling on contacts processed
max_provider_creditsYour spend cap on provider credits. Remaining contacts are skipped, uncharged
max_charge_usdYour cap on this run's Apify charges

Example:

{
"contacts": [
{ "id": "crm-1042", "full_name": "Jane Doe", "company_domain": "example.com", "linkedin_url": "https://www.linkedin.com/in/janedoe" }
],
"prospeo_api_key": "YOUR_PROSPEO_KEY",
"lusha_api_key": "YOUR_LUSHA_KEY",
"max_provider_credits": 200
}

๐Ÿ’ฐ Pricing

Pay per event. You pay Apify for the orchestration below, and you pay your providers separately on your own keys.

EventWhen it firesFreeBronzeSilverGold
apify-actor-startOnce per run$0.0005$0.0005$0.0005$0.0005
phone-search-submittedOnce per contact on which at least one provider was called$0.003 ($3.00 per 1,000)$0.00285$0.0027$0.00255
mobile-foundOnce per contact that comes back with a number$0.020 ($20.00 per 1,000)$0.019$0.018$0.017

A contact that reached no provider (no key, no identifier a provider accepts, your credit cap, the free plan cap) is free. Summary rows are free. The run stops at the maximum cost per run you set in Apify and at max_charge_usd, and keeps every row already paid for.

Free plan: up to 65 contacts per calendar month on the Apify Free plan, which is 1.50 USD of evaluation at the Free prices. Paid plans have no monthly contact cap.

๐Ÿงช Usage examples

Apify Console or API. Paste your contacts and at least one key, then run. Over the API, start POST /v2/acts/<actor id>/runs with the input above and read the dataset when the run finishes.

Clay. Add an HTTP API or Apify column, map full_name, company_domain, and linkedin_url to the single contact fields, and pass your key in the matching key field. Clay sends every value as a string; the actor accepts that.

MCP. The Mamba Labs MCP server @mambalabsdev/mcp-mobile-phone-waterfall-orchestrator exposes this actor as the tool find_mobile_phone for Claude, Cursor, and other MCP clients.

๐Ÿงฏ Error handling

SituationWhat you get
No key at allOne summary row, phone_status no_run, nothing called, only the run start fee charged, exit 0
A bad key or an empty balanceThat provider is switched off for the rest of the run after one failed call; the chain continues
Rate limitCalls are paced to each provider's documented limits; a 429 is not retried into a second 429
A provider times outThat step is recorded as an error and the chain moves on
FullEnrich still working after 150 secondsRecorded as an error. FullEnrich may still finish and charge your account later
A masked or national format number with no countryNot counted as found

โš ๏ธ Limitations

  • Match rates are not stated here because they have not been measured on a shared contact set. They vary by provider, country, and seniority.
  • Only Lusha reports a Do Not Call flag. A null phone_dnc means not reported, not cleared. Calling and texting rules (TCPA, national Do Not Call registers, GDPR) are yours to follow.
  • ContactOut reports no line type, so its numbers read unknown and pass the mobile_only filter.
  • Each provider's own terms bind your account. Lusha and Kaspr forbid reselling their data; Kaspr is not supported. Apollo is not supported because it delivers phone numbers only to a webhook.
  • Credits are reported as each provider reports or documents them. Dollar cost depends on your plan.

๐Ÿ†˜ Support

Open an issue on the Issues tab with the run id. Want another provider added? Say which one.

๐Ÿงฉ Want other GTM data?

Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.

๐Ÿ”ญ Account Hiring Watch๐Ÿ•ต๏ธ Agent Accessibility Auditor
๐Ÿค– AI Tooling Detector๐Ÿ“ก GTM Signals Aggregator
๐Ÿš€ Prospect Engine๐Ÿ“ Publishing Frequency Tracker
๐Ÿฆ‹ Bluesky Brand Presence Mapper๐Ÿ”€ Career Change Signal Engine
โฉ Sequencer Lead Push๐Ÿ”„ Company Change Event Feed
๐Ÿ“‡ Company Contact Details Extractor๐Ÿงญ Company Discovery List Builder
๐Ÿข Company Firmographic Enricher๐Ÿชช Company Identity Resolver
๐ŸŒ Company Social Presence Mapper๐Ÿท๏ธ Contact Classifier
๐Ÿ“ˆ Influencer Change Monitor๐Ÿ”Ž Influencer Finder
๐Ÿงพ Influencer Lead List Builder๐Ÿ‘ค Influencer Profile Scraper
๐Ÿ“ฌ Domain Deliverability Checker๐Ÿ”— Domain to LinkedIn URL Resolver
๐Ÿ›’ Ecommerce Platform Profiler๐ŸŽช Event Presence Index
โš–๏ธ Expert Witness Directory๐Ÿ’ต Company Funding Record
๐Ÿ’ฐ Funding and Press Signal Scanner๐Ÿ™ GitHub Organization Signal Scanner
๐Ÿง‘โ€๐Ÿ’ผ GTM Hiring Signal Scraper๐Ÿ“‹ Job Posting Monitor
๐Ÿงฑ Tech Stack Signal Detector๐ŸŽฏ ICP Fit Scorer
๐Ÿ”‘ Job Board Keyword Signal Scanner๐Ÿ” Job Change Tracker
๐Ÿ›๏ธ Legal Entity Resolver๐Ÿ“ฐ Link in Bio Scraper and Newsletter Detector
๐Ÿ’ผ LinkedIn Company Page Mapper๐Ÿ’ฌ LinkedIn Post Tracker
๐Ÿ“ข Meta Ad Library Monitor๐Ÿ“ธ Instagram Facebook Brand Presence Mapper
๐Ÿ†• New Hire Finder๐Ÿ“ฎ Outbound Stack Detector
๐Ÿ“„ Page Finder and Extractor๐Ÿง‘ People Finder & Email Verifier
๐Ÿ“Œ Pinterest Brand Presence Mapper๐Ÿ† Government Contract Award Monitor
๐Ÿ“… Reporting Window Finder๐Ÿ‘ฝ Reddit Brand Presence Mapper
โญ Trustpilot Reputation Enricher๐Ÿค Influencer Talent Agency Lookup
๐Ÿ‘ฅ Team Page People Extractor๐ŸŽต TikTok Brand Presence Mapper
๐Ÿ“Š Website Traffic Rank Estimator๐Ÿ… Workplace Program Detector
โœ–๏ธ X Brand Presence Mapperโ–ถ๏ธ YouTube Channel Stats Extractor
โœ‰๏ธ Work Email Waterfall

Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.

๐Ÿ› ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.

Built by Mamba Labs.