Migrate from Skrapp
This guide maps the Skrapp API (the v2 finder, account, and list endpoints and the v3 verifier endpoints) to Tomba. Skrapp API behavior checked on 2026-09-30 against the Skrapp API reference.
Before you begin
- Get your API key (
ta_…) and secret (ts_…); see Authentication. - Check what each endpoint costs in Credit costs and your plan's throttling in Limits by plan.
- Set your HTTP client timeout to at least 180 seconds. Tomba returns the finished result in the response.
Endpoint mapping
Replace the host api.skrapp.io with api.tomba.io, and the /api/v2 and /v3 prefixes with /v1.
| Skrapp | Tomba | Notes |
|---|---|---|
GET /api/v2/find | GET /v1/email-finder | |
POST /api/v2/find_bulk | POST /v1/bulk/finder | See Bulk and async jobs. |
GET /v3/verify | GET /v1/email-verifier | |
GET /v3/verify with enrich | GET /v1/enrich | Returns the person and company for an address. |
GET /v3/verify_bulk | POST /v1/bulk/verifier | See Email verifier. |
GET /api/v2/account | GET /v1/me | See Check usage. |
GET /api/v2/list | GET /v1/leads_lists | |
GET /api/v2/list/:listId/leads | GET /v1/leads with list | Pages with page and limit instead of start and size. |
Authentication changes
Skrapp reads the key from the X-Access-Key header. Tomba needs two headers, X-Tomba-Key and X-Tomba-Secret:
Code
Tomba API keys expire; plan their rotation with Key expiry.
Parameter mapping
| Skrapp | Tomba | Notes |
|---|---|---|
Finder firstName, lastName | first_name, last_name | Tomba also accepts full_name. |
Finder domain | domain | Tomba returns 400 unknown_record for a disposable or webmail domain. |
Finder company | company | When you send both, Tomba uses domain. |
Verifier email | email | A malformed address returns 422 params_invalid instead of a result. |
Verifier enrich | No equivalent | Call GET /v1/enrich for the person and company. |
List leads listId | list | |
List leads start, size | page, limit | Tomba pages start at 1: page = start / limit + 1. |
List leads kw | No equivalent |
Response field mapping
Tomba wraps every result in data.
| Skrapp | Tomba | Notes |
|---|---|---|
Finder email | data.email | null when no address is found; the status is 200, not 404. |
Finder accuracy | data.score | Computed differently. Recalibrate any threshold you apply to it. |
Finder firstName, lastName | data.first_name, data.last_name | |
Finder companyName | data.company | |
Finder quality.status | data.verification.status | null when the address hasn't been verified. See Status mapping. |
Finder quality.result | No equivalent | Verify the address with GET /v1/email-verifier for a result. |
Verifier email | data.email.email | An empty string when the domain is disposable. |
Verifier email_status | data.email.status | See Status mapping. |
Verifier result | data.email.result | See Result values. |
Verifier firstName, lastName, companyName, title | data.first_name, .last_name, .company, .position from GET /v1/enrich | |
Account credits.remaining, credits.total | GET /v1/me | See Check usage. |
Tomba's email finder also returns full_name, position, linkedin, country, and the sources where the address was found; see Person. The verifier fields are in Email verifier response.
Status mapping
Skrapp email_status | Tomba status | Tomba result |
|---|---|---|
valid | valid | deliverable |
catch-all | accept_all | risky |
invalid | invalid | undeliverable |
unknown | unknown | risky |
Tomba also returns disposable, with an empty result, for a disposable domain. The email finder uses the same status values in data.verification.status. Compare status case-insensitively. Each value is defined in Status values.
Error mapping
Skrapp returns an error code, a message, and the remaining credits. Tomba returns an errors object with type, message, and code:
| Skrapp | Tomba | What to do |
|---|---|---|
400 missing or malformed parameter | 422 params_invalid | Fix the parameter named in the message. |
401 invalid, missing, or revoked key | 400 authentication_failed (missing or malformed), 400 api_key_expired, 401 authentication_failed (wrong key or secret) | Check both headers; rotate an expired key. |
402 insufficient_credits | 402 quota_exceeded | Wait for your usage window to renew or add credits. |
404 no address found | 200 with data.email null | Check data.email instead of the status. |
429 rate limited | 429 rate_limit | Retry after the Retry-After delay; see Handle 429 responses. |
5xx | 500 api_error | Retry with backoff. |
Also handle 451 claimed_email when the owner of an address asked Tomba to stop processing it. Error responses don't consume credits; every type is listed in Errors.
Bulk and async jobs
Skrapp's bulk finder takes up to 100 people in a JSON body and returns a job id to poll. Its bulk verifier takes up to 50 addresses per request and answers directly. Tomba runs both as bulk jobs:
| Skrapp endpoint | Tomba bulk type |
|---|---|
POST /api/v2/find_bulk | finder: a CSV file or JSON data rows with name and domain or company columns. See Email finder. |
GET /v3/verify_bulk | verifier: a JSON list of addresses or a CSV file. See Email verifier. |
Each job is created, launched, polled, and downloaded as CSV; see Lifecycle. Row limits are in Bulk types. To be notified when a job ends, set webhook_url; see Bulk job events. A job is charged when you first download its results; see Billing.
The tId you attach to each Skrapp row has no equivalent. Keep your own ID in an extra CSV column.
Code example
This function replaces a call to Skrapp's GET /api/v2/find and returns Skrapp's field names, or null where Skrapp returned 404. It needs Node.js 18 or later.
Code
Cutover checklist
- Store the Tomba key and secret as
TOMBA_API_KEYandTOMBA_SECRET_KEY, and send them asX-Tomba-KeyandX-Tomba-Secretinstead ofX-Access-Key. - Change the host and path prefixes, and rename
firstNameandlastNametofirst_nameandlast_name. - Treat
data.emailnullas not found instead of a404. - Translate
email_statuswith the status mapping, comparingstatuscase-insensitively, and call/v1/enrichwhere you usedenrich=true. - Handle
402for exhausted credits, retry429afterRetry-After, and drop addresses that return451. - Move
find_bulkandverify_bulkbatches tofinderandverifierbulk jobs. - Run the same sample of people and addresses through both services and compare the results before you switch production traffic.