SkrappAPI Reference
Get your API key

Skrapp API

Find and verify business email addresses from your own code. One REST API, one key, JSON everywhere. Every call is metered in credits, and account reads are always free.

Base paths differ by service. Finding, account and list endpoints are on /api/v2; verification has moved to /v3. Every endpoint below is tagged with the version it lives on.

Your first call
# Find an address from a name + domain
curl "https://api.skrapp.io/api/v2/find?firstName=John&lastName=Doe&domain=skrapp.io" \
  -H "X-Access-Key: YOUR_API_KEY"

Authentication

Every request carries your key in the X-Access-Key header. There are no OAuth flows and no tokens to refresh. Keys are tied to your plan — a key on a free plan can call the API but returns no credits.

Keep the key server-side — it carries your full credit balance. If it leaks, rotate it from your dashboard and the old key stops working immediately.

Authenticated request
curl "https://api.skrapp.io/api/v2/account" \
  -H "X-Access-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Email Finder

GET/api/v2/findv2

1 credit per address returned — a miss costs nothing.

Resolve a person's business email from their name and their company. Give either a domain or a company name; the domain is more precise when you have it.

Provide either firstName and lastName together, or fullName.

Provide at least one of company or domain.

Query parameters

ParameterTypeDescription
firstName requiredstringThe person's first name.Send with lastName, or use fullName instead.
lastName requiredstringThe person's last name.
domain optionalstringThe company domain used for its email addresses, e.g. notion.so.Preferred over company when you have it.
company optionalstringThe company name to search within. Use when you do not know the domain.
Request
curl "https://api.skrapp.io/api/v2/find?firstName=John&lastName=Doe&domain=skrapp.io" \
  -H "X-Access-Key: YOUR_API_KEY"
200 — found
{
  "email": "john.doe@skrapp.io",
  "accuracy": 96,
  "firstName": "John",
  "lastName": "Doe",
  "companyName": "Skrapp",
  "quality": {
    "status": "valid",
    "result": "deliverable"
  }
}

Bulk Email Finder

POST/api/v2/find_bulkv2

1 credit per address returned. Up to 100 people per request.

Submit a batch of people and get a job back. Poll the same path with the returned id to collect results as they finish.

Include a maximum of 100 names and companies in the payload.

Per person: provide either firstName and lastName together, or name.

Per person: provide at least one of company or domain.

Request body

ParameterTypeDescription
tId optionalstringA unique id you set per row, echoed back so you can match results to your own records.
firstName optionalstringThe first name attribute.
lastName optionalstringThe last name attribute.
name optionalstringThe full name attribute.
company optionalstringThe company name attribute.
domain optionalstringThe company domain attribute.
country optionalstringCountry code for a localized search.
Request
curl -X POST "https://api.skrapp.io/api/v2/find_bulk" \
  -H "X-Access-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "people": [
      { "tId": "row-1", "firstName": "John",
        "lastName": "Doe", "domain": "skrapp.io" }
    ]
  }'
202 — queued
{
  "id": 84213,
  "status": "processing",
  "total": 1
}

Email Verifier

GET/v3/verifyv3

1 credit per verification, including invalid results.

Check whether an address is deliverable before you send to it. Pass enrich=true to get the person and company behind the address in the same call.

Query parameters

ParameterTypeDescription
email requiredstringThe email address to verify.
enrich optionalbooleanAlso return person and company data.Defaults to false.
Request
curl "https://api.skrapp.io/v3/verify?email=john.doe@skrapp.io&enrich=true" \
  -H "X-Access-Key: YOUR_API_KEY"
200 — response
{
  "email": "john.doe@skrapp.io",
  "email_status": "valid",
  "result": "deliverable",
  "firstName": "John",
  "lastName": "Doe",
  "companyName": "Skrapp",
  "title": "Head of Growth"
}

Verification statuses

validThe mailbox exists and accepts mail. Safe to send.
catch-allThe domain accepts everything, so deliverability can't be confirmed.
invalidThe mailbox does not exist. Do not send.
unknownThe mail server didn't answer in time. Retry later.

Bulk Email Verifier

GET/v3/verify_bulkv3

1 credit per address. Up to 50 addresses per request.

Verify several addresses in one call by repeating the email parameter. Results come back in the order submitted, with the same statuses as the single verifier.

Query parameters

ParameterTypeDescription
email requiredarrayThe addresses to verify. Repeat the parameter once per address.Maximum 50 per request.
Request
curl "https://api.skrapp.io/v3/verify_bulk?email=john.doe@skrapp.io&email=magnus@skrapp.io" \
  -H "X-Access-Key: YOUR_API_KEY"

Account Data

GET/api/v2/accountv2

Free — this call never consumes credits.

Read your plan, your remaining credits and your lists. Check this before a large bulk job to confirm you have the balance to finish it.

Request
curl "https://api.skrapp.io/api/v2/account" \
  -H "X-Access-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"
200 — response
{
  "email": "you@company.com",
  "plan": "Professional",
  "expiry": "2026-11-01",
  "credits": {
    "remaining": 7420,
    "total": 10000
  }
}

List Data

GET/api/v2/listv2

Free — no credits consumed.

Return every list on your account with its id, name and lead count. Add a list id to the path to fetch one list.

Request
curl "https://api.skrapp.io/api/v2/list" \
  -H "X-Access-Key: YOUR_API_KEY"
200 — response
[
  { "id": 1420, "name": "Q3 outbound", "leads": 318 }
]

List Leads

GET/api/v2/list/:listId/leadsv2

Free — no credits consumed.

Page through the leads saved in one list, optionally filtering by keyword.

Query parameters

ParameterTypeDescription
listId requirednumberThe id of the list, given in the path.
start optionalnumberOffset to page from.Defaults to 0.
size optionalnumberLeads per page.Defaults to 25, maximum 100.
kw optionalstringFilter by name, company or email address.
Request
curl "https://api.skrapp.io/api/v2/list/1420/leads?start=0&size=100&kw=John" \
  -H "X-Access-Key: YOUR_API_KEY"

Errors & limits

Errors use standard HTTP status codes with a JSON body explaining what went wrong. Anything in the 5xx range is safe to retry with backoff; 4xx responses will not succeed on retry without a change to the request.

400A required parameter is missing or malformed.
401The key is missing, revoked, or sent in the wrong header.
402Out of credits. Check Account Data for your balance.
404No address found for that person. This costs no credit.
429Rate limited. Back off and retry after the given interval.
402 — out of credits
{
  "error": "insufficient_credits",
  "message": "You have 0 credits left.",
  "remaining": 0
}