Reachlist docs
Every tool works the same way from MCP and from the REST API. Prices are in credits; a call that finds nothing costs nothing.
Claude.ai and ChatGPT
- In Claude.ai, open Settings, then Connectors, and add a custom connector. In ChatGPT, add a connector in developer mode.
- Use this URL:
https://api.reachlist.app/mcp - Sign in with your email when asked, and allow the connection. It spends your credits; you can disconnect it from your dashboard.
Cursor and Claude Code
Create an API key in your dashboard, then add the server. In Cursor, ~/.cursor/mcp.json:
{
"mcpServers": {
"reachlist": {
"url": "https://api.reachlist.app/mcp",
"headers": {
"Authorization": "Bearer rl_…"
}
}
}
}
In Claude Code:
claude mcp add --transport http reachlist https://api.reachlist.app/mcp --header "Authorization: Bearer rl_…"
REST API
Each tool is POST https://api.reachlist.app/v1/tools/{name} with a JSON body and your API key as a bearer token. The answer is JSON: found, data, credits_charged, balance and call_id. The full description is the OpenAPI file.
n8n and Make
Use an HTTP Request module: method POST, URL https://api.reachlist.app/v1/tools/find_email (or any tool), header Authorization: Bearer rl_…, JSON body with the tool's inputs. Import the OpenAPI file where the tool offers it.
Errors and retries
A refused call charges nothing and answers {"error": {"code", "message"}}:
| Code | Status | Means |
|---|---|---|
invalid_input | 400 | An input is missing or malformed; the message names it. |
unauthorized | 401 | No API key, or a revoked one. |
insufficient_credits | 402 | Not enough credits for the most the call can cost. |
monthly_cap | 402 | The call would pass the monthly cap you set. |
rate_limited | 429 | 60 calls a minute or 5,000 a day per key; wait Retry-After seconds. |
provider_error, not_available | 502, 503 | The data source failed or is off; try again later. |
To retry safely, send an Idempotency-Key header (any string up to 255 characters). The same key with the same request returns the first answer and charges nothing more, for 24 hours.
Tools
get_person1 credit
A LinkedIn profile URL in, a clean profile out: name, headline, location, about, followers. Set raw for the full record, with roles and education where the provider has them.
| Input | Type | What |
|---|---|---|
linkedin_url required | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/get_person \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"linkedin_url":"https://www.linkedin.com/in/mara-lindqvist-example"}'
{
"found": true,
"data": {
"name": "Mara Lindqvist",
"headline": "Head of Talent at Northpay",
"location": "Berlin, Germany",
"linkedin_url": "https://www.linkedin.com/in/mara-lindqvist-example",
"followers": 2140
},
"credits_charged": 1,
"balance": 412.5,
"call_id": "…"
}
get_company1 credit
A LinkedIn company URL or a domain in, the company out: name, industry, size, location, website, description.
| Input | Type | What |
|---|---|---|
linkedin_url | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
domain | string | A company's web domain, such as acme.com |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/get_company \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"domain":"northpay.example"}'
{
"found": true,
"data": {
"name": "Northpay",
"domain": "northpay.example",
"industry": "Financial Services",
"employees": "51-200",
"founded": 2019,
"location": "Berlin, Germany"
},
"credits_charged": 1,
"balance": 412.5,
"call_id": "…"
}
get_job1 credit
A LinkedIn job URL in, the job post out: title, company, place, posted date, description.
| Input | Type | What |
|---|---|---|
job_url required | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/get_job \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"job_url":"https://www.linkedin.com/jobs/view/4000000001"}'
{
"found": true,
"data": {
"title": "Senior Recruiter",
"company": "Ledgerly",
"location": "Berlin (Hybrid)",
"posted": "2026-11-02",
"employment_type": "Full-time",
"description": "Ledgerly is hiring a senior recruiter to…"
},
"credits_charged": 1,
"balance": 412.5,
"call_id": "…"
}
search_jobs2 credits per 10 results
Job posts by title, place and company. Charged per 10 results returned.
| Input | Type | What |
|---|---|---|
title | string | Job title words, such as 'Head of Sales' |
location | string | A city, region or country |
company | string | A company name or domain |
limit | integer (min 1, max 100, default 10) | How many results to return, at most 100 |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/search_jobs \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"title":"Head of Sales","location":"London","limit":10}'
{
"found": true,
"data": [
{
"title": "Head of Sales",
"company": "Kontor Finance",
"location": "London, England",
"posted": "2026-11-05",
"url": "https://www.linkedin.com/jobs/view/4000000002"
}
],
"credits_charged": 2,
"balance": 412.5,
"call_id": "…"
}
search_people2 credits per 10 results
People by job title, company and place, such as 'VPs of Sales at Series B SaaS companies in Berlin'. Charged per 10 results returned.
| Input | Type | What |
|---|---|---|
title | string | Job title words, such as 'VP Sales' |
company | string | A company name or domain |
location | string | A city, region or country |
industry | string | An industry, such as 'SaaS' or 'fintech' |
limit | integer (min 1, max 100, default 10) | How many results to return, at most 100 |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/search_people \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"title":"Head of Talent","industry":"fintech","location":"Berlin","limit":25}'
{
"found": true,
"data": [
{
"name": "Mara Lindqvist",
"title": "Head of Talent",
"company": "Northpay",
"company_domain": "northpay.example",
"location": "Berlin",
"linkedin_url": "https://www.linkedin.com/in/mara-lindqvist-example"
}
],
"credits_charged": 2,
"balance": 412.5,
"call_id": "…"
}
company_employees2 credits per 10 results
People who work at a company, optionally filtered by title. Charged per 10 results returned.
| Input | Type | What |
|---|---|---|
linkedin_url | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
domain | string | A company's web domain, such as acme.com |
title | string | Only people whose title matches, such as 'engineering' |
limit | integer (min 1, max 100, default 10) | How many results to return, at most 100 |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/company_employees \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"domain":"ledgerly.example","title":"engineering","limit":10}'
{
"found": true,
"data": [
{
"name": "Tomasz Wrona",
"title": "Engineering Manager",
"company": "Ledgerly",
"company_domain": "ledgerly.example",
"linkedin_url": "https://www.linkedin.com/in/tomasz-wrona-example"
}
],
"credits_charged": 2,
"balance": 412.5,
"call_id": "…"
}
find_email2 credits
A person's verified work email, from their LinkedIn URL or their name and company domain. Only addresses that pass verification and match the company's domain are returned.
| Input | Type | What |
|---|---|---|
linkedin_url | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
full_name | string | The person's full name |
domain | string | A company's web domain, such as acme.com |
Example request and answer
curl https://api.reachlist.app/v1/tools/find_email \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"full_name":"Jonas Brenner","domain":"ledgerly.example"}'
{
"found": true,
"data": {
"email": "j.brenner@ledgerly.example",
"status": "valid",
"domain": "ledgerly.example"
},
"credits_charged": 2,
"balance": 412.5,
"call_id": "…"
}
verify_email0.25 credits
One address in: valid, invalid or risky.
| Input | Type | What |
|---|---|---|
email required | The address to check |
Example request and answer
curl https://api.reachlist.app/v1/tools/verify_email \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"email":"aylin.demir@kontor.example"}'
{
"found": true,
"data": {
"email": "aylin.demir@kontor.example",
"result": "valid"
},
"credits_charged": 0.25,
"balance": 412.5,
"call_id": "…"
}
find_phone10 credits
A person's phone number from their LinkedIn URL. Charged only when one is found.
| Input | Type | What |
|---|---|---|
linkedin_url required | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
Example request and answer
curl https://api.reachlist.app/v1/tools/find_phone \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"linkedin_url":"https://www.linkedin.com/in/mara-lindqvist-example"}'
{
"found": true,
"data": {
"phone": "+49 30 0000000",
"line_type": "mobile",
"country_code": "DE"
},
"credits_charged": 10,
"balance": 412.5,
"call_id": "…"
}
recent_posts1 credit
A person's most recent LinkedIn posts, for a personal opener.
| Input | Type | What |
|---|---|---|
linkedin_url required | URL | A LinkedIn URL, such as https://www.linkedin.com/in/jane-doe |
limit | integer (min 1, max 10, default 3) | How many results to return, at most 10 |
Example request and answer
curl https://api.reachlist.app/v1/tools/recent_posts \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"linkedin_url":"https://www.linkedin.com/in/jonas-brenner-example","limit":1}'
{
"found": true,
"data": [
{
"text": "We're hiring three engineers in Berlin this quarter…",
"posted": "2026-11-04",
"reactions": 86,
"comments": 12
}
],
"credits_charged": 1,
"balance": 412.5,
"call_id": "…"
}
similar_companies2 credits per 10 results
Companies like a seed company's domain. Charged per 10 results returned.
| Input | Type | What |
|---|---|---|
domain required | string | A company's web domain, such as acme.com |
limit | integer (min 1, max 100, default 10) | How many results to return, at most 100 |
raw | boolean (default false) | Return the full provider record instead of the trimmed one |
Example request and answer
curl https://api.reachlist.app/v1/tools/similar_companies \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{"domain":"northpay.example","limit":10}'
{
"found": true,
"data": [
{
"name": "Ledgerly",
"domain": "ledgerly.example",
"industry": "Financial Services",
"employees": "51-200"
}
],
"credits_charged": 2,
"balance": 412.5,
"call_id": "…"
}
creditsFree
Your credit balance and this month's usage. Free.
No inputs.
Example request and answer
curl https://api.reachlist.app/v1/tools/credits \
-H "Authorization: Bearer rl_…" \
-H "Content-Type: application/json" \
-d '{}'
{
"found": true,
"data": {
"balance": 412.5,
"spent_this_month": 87.5,
"monthly_cap": null
},
"credits_charged": 0,
"balance": 412.5,
"call_id": "…"
}