Datacircle

UpLead alternative: U.S. emails and mobiles as one free file, not credits by the month

UpLead sells B2B contacts one credit at a time: a contact's email and mobile direct dial, among 200 million, each email verified when you unlock it, with a 95% accuracy guarantee. Its trial has 5 credits for 7 days; Essentials is $99 a month for 170. If the people you want work at U.S. companies of 11 to 500 employees, you can have them all at once.

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 UpLead's numbers from its pricing page, its data page and its API page in October 2026.

UpLead and Datacircle, side by side

UpLead's contact data and Datacircle's, October 2026
UpLeadDatacircle
Free5 credits for 7 daysThe 10M+ U.S. file, whole: 9,521,154 people, 4,016,020 mobiles, 2,790,286 emails; $5 of API credit
Billed monthlyEssentials $99 for 170 credits, more at $0.60; Plus $199 for 400 credits, more at $0.50No plan: a balance from $5
Billed yearlyEssentials $74 a month, 2,040 credits a year; Plus $149 a month, 4,800 credits a year; Professional by demonothing to renew: the file is a download
Per 1,000 contacts$582.35 on Essentials monthly to $372.50 on Plus yearlyfree, and as many CSVs from it as you like
Emails verifiedagain when unlocked or exported; a verified bounce's credit refundedthe date each was last verified, in EMAIL_VALIDATED_AT
API1 person result = 1 credit, nothing without verified data; full access on ProfessionalThe LinkedIn profile behind a URL, 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.
Coverage200M+ contacts with emails, 19M+ companies, 27K+ technologies trackedU.S., companies of 11 to 500 employees in the free file (every size in the 50M+), an October 2026 snapshot
What UpLead's plans come to per 1,000 contacts, October 2026
PlanMonthlyPer 1,000 monthlyYearlyPer 1,000 yearlyMore credits, per 1,000
Essentials$99 for 170$582.35$888 for 2,040$435.29$600.00
Plus$199 for 400$497.50$1,788 for 4,800$372.50$500.00

“One credit equals one contact”, with its email and mobile direct dial. Each plan is one user. A year of Plus, $1,788, unlocks 4,800 people at most. The free file holds 5,182,067 people with a mobile or an email.

UpLead's lists by job title, counted in the file

UpLead's guide to buying email lists sends you on to its lists by job title: CFOs, CTOs, VPs of sales, HR managers, business owners. Each is one pattern on the title as written on LinkedIn. Unzip the file into us_10m/, pip install duckdb, then

import duckdb

duckdb.sql("create view people as select * from 'us_10m/us_smb_mid_market_persons.parquet'")

# A website as its domain: lowercase, without http(s)://, www. or a path, so "https://www.Acme.com/about" is acme.com
duckdb.sql(r"create macro domain(url) as regexp_extract(lower(trim(url)), '^(?:https?://)?(?:www[.])?([^/:?#]+)', 1)")
duckdb.sql("create view companies as select *, domain(URL) as DOMAIN from 'us_10m/us_smb_mid_market_companies.parquet'")
# UpLead's email lists by job title, counted: the people with a mobile phone or an email in each
duckdb.sql(r"""
  with lists(list, pattern, skip) as (values
    ('Business owners', '\b(owner|co-owner)\b', '\b(product|process|system|data|service|application|platform) owner\b|\bowner.?s rep'),
    ('CEOs', '\b(ceo|chief executive officer)\b', null),
    ('CFOs', '\b(cfo|chief financial officer)\b', null),
    ('COOs', '\b(coo|chief operating officer)\b', null),
    ('CTOs', '\b(cto|chief technology officer)\b', null),
    ('CIOs', '\b(cio|chief information officer)\b', null),
    ('CMOs', '\b(cmo|chief marketing officer)\b', null),
    ('CHROs', '\b(chro|chief (human resources|people) officer)\b', null),
    ('VPs of sales', '\b(vp|vice president)\b.*\bsales\b', null),
    ('Sales directors', '\bdirector\b.*\bsales\b|\bsales director\b', null),
    ('Marketing directors', '\bdirector\b.*\bmarketing\b|\bmarketing director\b', null),
    ('HR managers', '\b(hr|human resources) manager\b', null)),
  titled as (  -- the titles any list can match, so each list's pattern reads far fewer rows
    select CURRENT_JOB_TITLE, MOBILE_PHONE, EMAIL from people
    where (MOBILE_PHONE is not null or EMAIL is not null)
      and regexp_matches(CURRENT_JOB_TITLE, '\b(owner|ceo|cfo|coo|cto|cio|cmo|chro|chief|vp|vice president|director|hr|human resources)\b', 'i'))
  select l.list, count(*) as people, count(p.MOBILE_PHONE) as mobile, count(p.EMAIL) as email
  from lists l
  join titled p on regexp_matches(p.CURRENT_JOB_TITLE, l.pattern, 'i')
  where (l.skip is null or not regexp_matches(p.CURRENT_JOB_TITLE, l.skip, 'i'))
  group by l.list order by people desc
""").show()
UpLead's lists by job title in the October 2026 free file, and what as many contacts come to at UpLead's lowest published price, $372.50 per 1,000 (Plus, billed yearly)
ListWith a mobile or an email…a mobile…an emailAs many UpLead credits
Business owners84,14274,98232,518$31,343
CEOs51,89142,81234,202$19,329
Sales directors28,07623,47317,920$10,458
Marketing directors21,33417,74613,304$7,947
CFOs19,93516,65113,390$7,426
COOs18,98515,67013,548$7,072
VPs of sales17,33714,88211,609$6,458
HR managers12,8319,3348,419$4,780
CTOs5,2564,3023,899$1,958
CMOs1,8811,5131,348$701
CIOs1,8401,5591,308$685
CHROs873680677$325

A title can be in two lists (“Owner & CEO”). To keep a list, swap .show() for a copy (...) to 'cfos.csv' with the columns you want, as below, or add c.EMPLOYEE_COUNT_RANGE, p.STATE_CODE or c.LINKEDIN_INDUSTRY to the where.

UpLead's suppression list, as one query

On Plus, UpLead takes “a list of emails, phone numbers or company URL's to exclude from your results”: the people you already have. From the file, the same exclusion is three not exists, here on the CFOs:

# have.csv: the contacts you already have, with an email, a phone and a website column (any cell can be empty).
# The CFOs, without anyone you have, nor anyone at a company you have
duckdb.sql("create view have as select * from read_csv('have.csv', header = true, all_varchar = true)")
duckdb.sql(r"""
  copy (
    select p.FULL_NAME, p.CURRENT_JOB_TITLE, c.NAME as COMPANY, c.URL as WEBSITE, p.EMAIL, p.MOBILE_PHONE, p.LINKEDIN_URL
    from people p
    join companies c on c.LINKEDIN_ID = p.CURRENT_JOB_COMPANY_LINKEDIN_ID
    where regexp_matches(p.CURRENT_JOB_TITLE, '\b(cfo|chief financial officer)\b', 'i')
      and (p.MOBILE_PHONE is not null or p.EMAIL is not null)
      and not exists (from have h where lower(trim(h.email)) = p.EMAIL)
      and not exists (from have h where right(regexp_replace(h.phone, '[^0-9]', '', 'g'), 10) = right(regexp_replace(p.MOBILE_PHONE, '[^0-9]', '', 'g'), 10))
      and not exists (from have h where domain(h.website) = c.DOMAIN)
  ) to 'cfos_new.csv'
""")

Emails are compared in lowercase, phones by their last 10 digits, websites by their domain, so “(214) 538-1300” is “+1 214-538-1300” and “HTTPS://www.Acme.com/” is acme.com. We tested it on a have.csv of 200 CFOs' emails, 200 of their mobiles and 60 of their companies' websites from the file, each written one of the ways people paste them (capitals, spaces, brackets, dots, a leading 1, www., a path), and 20 made-up rows. It took 0.8 s.

The suppression test, on the October 2026 free file
CFOs
With a mobile or an email, at a company of the file19,935
…whose email is in have.csv201
…whose mobile is in have.csv204
…at a company whose website is in have.csv62
Taken out (3 of them twice)464
In cfos_new.csv19,471

None of the emails, mobiles or companies of have.csv is left in cfos_new.csv, and it holds exactly the CFOs a separate count of ours expected. A website takes everyone at that company out, whatever their email.

How fresh the emails are

UpLead verifies each email again as you unlock it, and gives it a status: Valid, Invalid or Accept All. The file is a snapshot: each of its 2,790,286 emails carries EMAIL_VALIDATED_AT, the date it was last verified.

# When each email was last verified, by month (UTC)
duckdb.sql("set TimeZone = 'UTC'")
duckdb.sql("""
  select strftime(EMAIL_VALIDATED_AT, '%Y-%m') as month, count(*) as emails
  from people where EMAIL is not null
  group by month order by month
""").show()

In the October 2026 file, 2,778,350 of them (99.6%) were last verified in August, September or October 2026, 2,055,276 (73.7%) since September 1; the oldest on September 24, 2024, the newest on October 1, 2026. Sending to them weeks later, check the older ones again with your email verifier, or in the CFOs' query above, write case when p.EMAIL_VALIDATED_AT >= '2026-09-01' then p.EMAIL end as EMAIL for p.EMAIL to keep only the latest emails, the mobiles all.

What UpLead does that the file doesn't

  • Verification at the unlock, and a refund: UpLead verifies each email as you take it and refunds the credit of a verified bounce.
  • The world: 200 million contacts and 19 million companies, where the free file is 9,521,154 people at U.S. companies of 11 to 500 employees.
  • Technographics (27,000 technologies), buyer intent, Email Pattern Intel and competitor intelligence.
  • The tool: a search app, a Chrome extension, CRM integrations from Salesforce to Pipedrive, and a done-for-you cold email service.

A person as they are today rather than in October, their title and company, is the LinkedIn profile behind their URL: the LinkedIn profile API, at $0.00125 a profile found.

Moving the data work

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 UpLead alternative?

UpLead's free trial is 5 credits for 7 days. 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 1,748,139 companies, 4,016,020 with a mobile phone and 2,790,286 with an email, free with a work email.

How much does UpLead cost?

Its pricing page, read in October 2026: billed monthly, Essentials is $99 a month for 170 credits and Plus $199 for 400, more credits at $0.60 and $0.50 each. Billed yearly, $74 and $149 a month, for 2,040 and 4,800 credits a year. One credit is one contact, so that's $582.35 to $372.50 per 1,000 contacts. Professional is billed yearly, at a price set in a demo.

Does UpLead have an API?

Yes. Its API spends the same credits: 1 person result = 1 credit, and nothing when it finds no verified data. Full API access is on Professional, its yearly plan priced in a demo.

Are the free file's emails verified?

Each one comes with EMAIL_VALIDATED_AT, the date it was last verified: in the October 2026 file, 99.6% of its 2,790,286 emails were last verified in August, September or October 2026. UpLead verifies each email again when you unlock it and refunds the credit of a verified bounce; the file is a download, so check the older ones again before you send.

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