Prospeo alternative: U.S. mobiles and emails as one free file
Prospeo sells B2B contacts by the credit: 1 for a verified email, 10 for a mobile, from 2,000 credits a month for $49 per user, reset at each renewal. If the people you write to or call work at U.S. companies of 11 to 500 employees, look in the file below first: its emails and mobiles cost no credits.
Free: 10M+ U.S. B2B leads, as a flat file. Download it at datacircle.dev. 9,521,154 people at 1,748,139 U.S. companies, 4,016,020 with a mobile phone and 2,790,286 with an email. Below, side by side, with Prospeo's numbers from its pricing page, its Enrich Person docs and its help center on plans and API limits in October 2026.
Prospeo and Datacircle, side by side
| Prospeo | Datacircle | |
|---|---|---|
| Free | 100 credits a month, 25 rows at a time, no CSV enrichment | The 10M+ U.S. file, whole: 9,521,154 people, 4,016,020 mobiles, 2,790,286 emails; $5 of API credit |
| Paid | Starter $49 to Pro $249 a month per user, 2,000 to 15,000 credits; 25% off billed yearly | No plan: a balance from $5 |
| A credit | 1 a verified email, 10 a mobile (its email included); a company record 1 | none: the file is a download |
| Unused credits | expire at renewal, add-ons too; add-ons from 1,000 credits for $10, on a paid plan | funds never expire |
| Job changes | a Job Change filter and Job Change Tracking from Growth | each person's current job start date, a month: the query below |
| Freshness | "Weekly refreshed data", says its pricing page | an October 2026 snapshot, each record with the date it was last refreshed |
| API | Enrich Person by LinkedIn URL, email or name and company: 2,000 records a day on Starter to 500,000 on Pro | The LinkedIn profile behind a URL, live, not an email or a phone: $1.25 per 1,000 through Up2Data (a profile it can't find is free), $3.70 per 1,000 through HarvestAPI. |
| Coverage | 200M+ contacts and 30M+ companies to search, say its API docs | U.S., companies of 11 to 500 employees in the free file (every size in the 50M+) |
What an email and a mobile cost at Prospeo
| Plan | Credits a month | Billed monthly | Per 1,000 emails | Per 1,000 mobiles | Per 1,000 emails, billed yearly |
|---|---|---|---|---|---|
| Starter | 2,000 | $49 | $24.50 | $245.00 | $18.38 |
| Growth | 5,000 | $99 | $19.80 | $198.00 | $14.80 |
| Pro | 15,000 | $249 | $16.60 | $166.00 | $12.45 |
Credits come at the start of each billing cycle, all of a year's at once billed yearly, and whatever is left expires at renewal. Prospeo charges nothing for a person it doesn't find, or for the same record enriched again within 90 days, its Enrich Person docs say. If it found every contact in the list below, that would be 217,422 credits: more than a year of Pro billed yearly, 180,000 credits for $2,241.
New in the job: directors and above who started in the last 12 months
Prospeo's Job Change filter, from Growth, finds the people who just changed jobs. The file gives each person the month their current job started, CURRENT_JOB_START_DATE: 862,532 of its 1,129,058 directors and above have one. Unzip the file into us_10m/, pip install duckdb, and:
import duckdb
duckdb.sql("create view people as select * from 'us_10m/us_smb_mid_market_persons.parquet'")
duckdb.sql("create view companies as select * from 'us_10m/us_smb_mid_market_companies.parquet'")
# A title's level: 1 an owner, a founder, a CEO or a president; 2 another chief officer; 3 a VP; 4 a director or a head of; 5 a manager; 6 anyone else
duckdb.sql(r"""
create macro level(title) as case
when regexp_matches(title, '\bassistant\b.*\b(to|for)\b|\bexecutive assistant\b', 'i') then 6
when regexp_matches(title, '\b(owner|co-owner|founder|co-founder|cofounder|ceo|chief executive officer)\b', 'i')
and not regexp_matches(title, '\b(product|process|system|data|service|application|platform) owner\b|\bowner.?s rep', 'i') then 1
when regexp_matches(regexp_replace(title, 'vice[ -]president', 'vp', 'gi'), '\bpresident\b', 'i') then 1
when regexp_matches(title, '\b(chief\b.*\bofficer|cfo|coo|cto|cmo|cro|cio|ciso|chro)\b', 'i') then 2
when regexp_matches(title, '\b(vp|svp|evp|vice[ -]president)\b', 'i') then 3
when regexp_matches(title, '\b(director|head of)\b', 'i') then 4
when regexp_matches(title, '\bmanager\b', 'i') then 5
else 6
end
""")# Directors and above by the month they started their current job, since October 2025
duckdb.sql("""
select strftime(CURRENT_JOB_START_DATE, '%Y-%m') as started, count(*) as people, count(MOBILE_PHONE) as with_a_mobile, count(EMAIL) as with_an_email
from people
where level(CURRENT_JOB_TITLE) <= 4 and CURRENT_JOB_START_DATE >= '2025-10-01'
group by started order by started desc
""").show()| Started in | People | With a mobile | With an email |
|---|---|---|---|
| September 2026 | 2 | 2 | 0 |
| August 2026 | 95 | 67 | 46 |
| July 2026 | 633 | 496 | 285 |
| June 2026 | 654 | 506 | 277 |
| May 2026 | 705 | 518 | 355 |
| April 2026 | 2,621 | 1,879 | 1,465 |
| March 2026 | 3,793 | 2,551 | 2,086 |
| February 2026 | 3,381 | 2,195 | 1,833 |
| January 2026 | 7,153 | 4,645 | 4,102 |
| December 2025 | 3,034 | 1,909 | 1,688 |
| November 2025 | 3,212 | 1,993 | 1,795 |
| October 2025 | 6,965 | 4,473 | 4,226 |
That's 32,248 people at 25,126 companies. A start date is what the person's profile said when their record was read, and 30,690 of them were read between April and September 2026, so the months since April count only the people read after they started: a floor, not a slowdown. Then the ones you can reach:
# The ones with a mobile or an email, newest in the job first, with their company, to a CSV
duckdb.sql("""
copy (
select p.FULL_NAME, p.CURRENT_JOB_TITLE, p.CURRENT_JOB_START_DATE, c.NAME as COMPANY, c.EMPLOYEE_COUNT_RANGE, c.LINKEDIN_INDUSTRY,
p.EMAIL, p.MOBILE_PHONE, p.STATE_CODE, p.LINKEDIN_URL, p.UPDATED_AT
from people p
left join companies c on c.LINKEDIN_ID = p.CURRENT_JOB_COMPANY_LINKEDIN_ID
where level(p.CURRENT_JOB_TITLE) <= 4 and p.CURRENT_JOB_START_DATE >= '2025-10-01'
and (p.EMAIL is not null or p.MOBILE_PHONE is not null)
order by p.CURRENT_JOB_START_DATE desc, COMPANY
) to 'new_decision_makers.csv'
""")It writes 26,316 people, each with their company and the date their record was read: 21,234 with a mobile, 18,158 with an email, 13,076 with both. 8,284 are at companies of 11 to 50 employees, 11,027 at 51 to 200 and 7,005 at 201 to 500, and the most common titles are Chief Financial Officer (531), Vice President (466) and Director of Operations (460). Change '2025-10-01' for a later date, or level(...) <= 4 to = 1 for owners, founders and CEOs only. The laws on reaching them are yours to follow: in the U.S., CAN-SPAM for email, the TCPA and the National Do Not Call Registry for calls.
Where they work today
A new job in the file is a few months old by the time you read it. Before you write, the API reads the person's LinkedIn profile behind the URL in the CSV, live: Live. Each request goes to the provider and gets the profile as it is today. $1.25 per 1,000 through Up2Data (a profile it can't find is free), $3.70 per 1,000 through HarvestAPI. Up2Data takes $1 a day per account (800 profiles), with a shared daily limit for all customers, then answers 429 until 00:00 UTC; HarvestAPI has no daily limit.
So the list's 26,316 people cost $38.57 over 30 days, 800 a day through Up2Data and the rest through HarvestAPI, or $97.37 at once through HarvestAPI. The same check every week, on a list you keep: track LinkedIn job changes.
What Prospeo does that Datacircle doesn't
- Emails it verifies and mobiles it finds when you ask: the file's emails carry the date each was last verified.
- Contacts outside the U.S., and companies of every size in one search.
- Search with AI and 30+ filters, intent topics and its Chrome extension.
- Job Change Tracking on your CRM, and HubSpot and Salesforce sync from Growth.
Other tools' credits next to the file: Hunter.io alternative, Snov.io alternative, Kaspr alternative, Cognism alternative; what each tool's free plan gives: free B2B database; lists by job title: email lists.
The free file is on your dashboard once you sign up with your work email, with the $5 credit and your API key.
Questions
Is there a free Prospeo alternative?
Prospeo's Free plan gives 100 credits a month: 100 verified emails, or 10 mobiles at 10 credits each, with no CSV enrichment. Datacircle's free offer is a whole file. Free: 10M+ U.S. B2B leads, as a flat file. Download it at datacircle.dev. 9,521,154 people at U.S. companies, 4,016,020 with a mobile phone and 2,790,286 with an email, free with a work email.
How much does Prospeo cost?
Its pricing page, per user, in October 2026: Starter $49 a month for 2,000 credits, Growth $99 for 5,000, Pro $249 for 15,000; billed yearly, $441, $888 and $2,241 a year for 24,000, 60,000 and 180,000 credits, given upfront. A verified email is 1 credit, a mobile 10.
Do Prospeo credits roll over?
No, says its pricing page: credits reset at each renewal and unused ones expire, add-on credits too. Datacircle has no plan. No. You add funds to your balance and pay per call; funds never expire.
Does Prospeo have an API?
Yes. Its Enrich Person endpoint takes a LinkedIn URL, an email, or a name with a company, and answers the person with their email, and their mobile if you ask: 1 credit per email found, 10 per mobile found with the email included, nothing when nothing is found. Its help center caps it at 2,000 records a day on Starter, 5,000 on Growth and 500,000 on Pro.
How recent are the file's job starts?
Each start date is a month, as of when the person's record was read; 30,690 of the 32,248 below were read between April and September 2026. So the newest months count only people read after they started: a floor. Prospeo's pricing page says its data is refreshed weekly. To know where one person works today, the API reads their profile live.
Do you have a Chrome extension?
No. Datacircle sells data, not a prospecting tool: no browser extension, search portal, email campaigns or dialer.
Sign up at datacircle.dev with your work email: a $5 credit, that's 4,000 LinkedIn profiles at $1.25 per 1,000. Free: 10M+ U.S. B2B leads, as a flat file. Download it at datacircle.dev.
Sign up