Datacircle

ContactOut alternative: the emails and mobiles behind your LinkedIn URLs, as one free file

ContactOut finds the email and phone number behind a LinkedIn profile: a Chrome extension that works on LinkedIn, a search portal, email campaigns and an API, sold by the month. Its free plan is 5 emails, 5 phones and 5 exports a day. If what you have is a list of LinkedIn URLs of people in the U.S., you can match 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, each with their LinkedIn URL, 4,016,020 with a mobile phone and 2,790,286 with an email. Below, side by side, with ContactOut's numbers from its pricing page, its terms and its API reference in October 2026.

ContactOut and Datacircle, side by side

ContactOut's contact data and Datacircle's, October 2026
ContactOutDatacircle
Free5 emails, 5 phones and 5 exports a day, 1 user per companyThe 10M+ U.S. file, whole: 9,521,154 LinkedIn URLs, 4,016,020 mobiles, 2,790,286 emails; $5 of API credit
PaidEmail, $49 a month; Email + Phone, $99 a month, with U.S. and UK data ($25 and $49 without); 1 user per companyNo plan: a balance from $5
“Unlimited”fair use: 2,000 email credits and 1,000 phone credits per account per monththe whole file, no credits
Exports300 a month on Email, 600 on Email + Phonea download: write as many CSVs from it as you like
APIa key by booking a meeting, price not published; 1 email credit and 1 phone credit a profile where foundThe 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.
Personal emailsyes: 150M, says its API pageno: work emails only
Coverage800M people profiles, says its API pageU.S., companies of 11 to 500 employees in the free file (every size in the 50M+), an October 2026 snapshot

At its fair use limit, Email is 2,000 emails for $49: $24.50 per 1,000 emails. Email + Phone is $99 for at most 1,000 phone numbers and 2,000 emails a month, so a year of it, $1,188, reaches 12,000 phones at most. The free file holds 4,016,020 mobiles, and 5,182,067 people with a mobile or an email.

Your LinkedIn URLs, matched to the file

ContactOut's bulk API takes 100 LinkedIn URLs a call and spends a credit for each email and each phone it finds. The file does a whole list in one join. Unzip it into us_10m/, pip install duckdb, and put your URLs in linkedin_urls.csv under a url header:

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 LinkedIn URL as the file writes it: the part after /in/, decoded and lowercased, so http, no www, a trailing slash or ?utm_source match
duckdb.sql(r"create macro profile(url) as lower(url_decode(regexp_extract(url, 'linkedin\.com/in/([^/?#]+)', 1)))")
# Your LinkedIn URLs, one per row of linkedin_urls.csv under a "url" header, with each one's email and mobile from the file
duckdb.sql("""
  copy (
    select u.url, p.FULL_NAME, p.CURRENT_JOB_TITLE, c.NAME as COMPANY, p.EMAIL, p.MOBILE_PHONE, p.CITY, p.STATE_CODE
    from read_csv('linkedin_urls.csv') u
    left join people p on profile(p.LINKEDIN_URL) = profile(u.url)
    left join companies c on c.LINKEDIN_ID = p.CURRENT_JOB_COMPANY_LINKEDIN_ID
  ) to 'linkedin_urls_with_contacts.csv'
""")

We ran it on a laptop on 1,070 URLs: 1,020 people of the October 2026 file drawn at random, each written one of the ways people paste them (http, no www, a trailing slash, ?utm_source=share, uk.linkedin.com in capitals, /details/experience/, accents written out or percent-encoded), and 50 made-up ones. It took 0.6 s.

The URL list's CSV, on the October 2026 free file
URLs
In the list1,070
Found in the file (all of the file's, whatever the form)1,020
Made up, not found: the row stays, blank50
Found, with a mobile or an email527
…with a mobile phone415
…with an email283
…with both171

About half the people found have a contact, as across the whole file: 5,182,067 of 9,521,154 (54%). A URL the file doesn't hold comes back blank: someone outside the U.S., at a company of fewer than 11 or more than 500 employees, or not in the October release. That's where ContactOut's lookup comes in.

A recruiter's list, as one query

ContactOut is “trusted by 1.4M recruiters and sales reps”, says its sales page. A recruiter's list from the same file, searched by title and place instead of by URL, with the same setup:

# Software engineers in Texas with a mobile phone or an email, with their company, to a CSV
duckdb.sql(r"""
  copy (
    select p.FULL_NAME, p.CURRENT_JOB_TITLE, c.NAME as COMPANY, c.EMPLOYEE_COUNT_RANGE, p.MOBILE_PHONE, p.EMAIL, p.CITY, p.LINKEDIN_URL
    from people p
    left join companies c on c.LINKEDIN_ID = p.CURRENT_JOB_COMPANY_LINKEDIN_ID
    where regexp_matches(p.CURRENT_JOB_TITLE, '\b(software (engineer|developer)|(full[- ]?stack|back[- ]?end|front[- ]?end) (engineer|developer))\b', 'i')
      and p.STATE_CODE = 'TX'
      and (p.MOBILE_PHONE is not null or p.EMAIL is not null)
  ) to 'texas_software_engineers.csv'
""")
Software engineers in the October 2026 free file
People
Software engineers in the U.S. (the title alone)72,295
…with a mobile or an email46,932
…with a mobile phone30,321
In Texas, with a mobile or an email: the CSV3,406
…with a mobile phone2,129
…with an email2,517
…with both1,240

The titles are matched as written on LinkedIn; change the pattern, the state or add c.EMPLOYEE_COUNT_RANGE to the where for another list. One profile you're looking at, as ContactOut's extension does:

# One profile you're looking at on LinkedIn
duckdb.sql("""
  select FULL_NAME, CURRENT_JOB_TITLE, EMAIL, MOBILE_PHONE
  from people
  where profile(LINKEDIN_URL) = profile('https://www.linkedin.com/in/their-profile/')
""").show()

The emails are work emails: none of the 2,790,286 is at Gmail, Yahoo, Hotmail, Outlook, AOL or iCloud. A candidate's personal email is ContactOut's, not ours.

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

ContactOut's free plan gives 5 emails, 5 phones and 5 exports a day. 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, each with their LinkedIn URL, 4,016,020 with a mobile phone and 2,790,286 with an email, free with a work email.

How much does ContactOut cost?

Its pricing page, read in October 2026: Email is $49 a month and Email + Phone $99 a month with U.S. and UK data ($25 and $49 without), each for 1 user per company; Team and API on request. Its terms put the unlimited plans under a fair use policy: 2,000 email credits and 1,000 phone credits per account per month.

Does ContactOut have an API?

Yes: a key comes by booking a meeting, and its price isn't published. Its LinkedIn Profile API takes one profile URL and uses 1 email credit if it finds an email and 1 phone credit if it finds a phone; its bulk endpoint takes 100 LinkedIn URLs a call.

Does Datacircle have personal emails, like ContactOut?

No. The file's emails are work emails: none of the 2,790,286 is at Gmail, Yahoo, Hotmail, Outlook, AOL or iCloud. And Datacircle sells data, not a prospecting tool: no browser extension, search portal, email campaigns or dialer. Its API returns the LinkedIn profile behind a URL, not an email or a phone.

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