# DataSkip Skip Tracing API: Flat 4 Cents Per Match

> Machine-readable mirror of https://dataskip.io/skip-tracing-api for AI agents. Rendered page: https://dataskip.io/skip-tracing-api · Full API reference: https://dataskip.io/developers.md · Full site summary: https://dataskip.io/llms.txt

The DataSkip skip tracing API turns a US property address into the owner's name, mobile phones with Do Not Call flags, landlines, emails, and mailing address. Pricing is pay per hit: a flat 4 cents per matched lookup at any volume, misses are always free. No subscription, no credit system, no minimum order, and loaded balances never expire. Requests are address only; the owner's name is never required as input. US properties only, all 50 states. Typical lists see a 98.9% hit rate.

## Endpoint

- POST https://app.dataskip.io/api/v1/skip-trace
- OpenAPI 3.1 spec (every endpoint, typed schemas, JSON error shape): https://dataskip.io/openapi.json
- Auth: `Authorization: Bearer <api key>` (create keys in the dashboard at https://app.dataskip.io under Settings, API)
- Request body: `{ "address": "44 Pine St", "city": "Bridgewater", "state": "MA", "zip": "02324" }` (`address` required; city, state, and ZIP improve match accuracy)
- Match: HTTP 200 with `found: true`, the contact record, and `charged: 4` (cents)
- Miss: HTTP 200 with `found: false`, no charge
- 402 means insufficient balance; 429 means rate limited (500 single lookups per minute per account)

## Bulk endpoint (up to 100 addresses)

- POST https://app.dataskip.io/api/v1/skip-trace-bulk
- Body: `{ "addresses": [{ "address": "...", "city": "...", "state": "...", "zip": "..." }, ...] }` with 1 to 100 entries; only `address` is required per entry
- Same pricing as single lookups: 4 cents per match, misses free. The worst case (every entry matching) is charged up front and non-matches are refunded automatically when the request completes, so the net charge is matches only; 402 with `balanceRequired` means the balance cannot cover the batch
- Response: `{ "success": true, "total": N, "matched": M, "totalCharged": cents, "results": [...] }`; `results` is in request order and each entry has the single-lookup shape (`found`, `charged`, `contact`, `phones`, `emails`)
- Rate limit: 250 bulk requests per minute per account (100 addresses each); 429 responses carry a Retry-After header
- SDK: `await st.skipBulk([...addresses])` (strings or structured fields, mixable; one-shot export available; typed as `BulkLookupResponse`)

## Returned per match

- Owner name: first, middle, last, and full name
- Property address: street, city, state, ZIP
- Mailing address: returned when it differs from the property (absentee owner signal)
- Mobile phones: up to 10, each with a DNC flag
- Landlines: up to 9, each with a DNC flag
- Emails: up to 28 deliverable addresses tied to the owner

Not a background check service: results cover property ownership and contact information only, never criminal, credit, or employment records.

## Pricing

- Single lookup, matched: 4 cents, charged per hit only
- Bulk row, matched: 4 cents, same flat rate, up to 100 addresses per API request or 250,000 records per CSV job
- Any miss: $0, always free, single or bulk
- Minimum order: none, a single lookup works
- Subscription: none, pay as you go
- Balance expiry: never, loaded balances keep their value

The API uses the same rates as the dashboard; there is no API surcharge and no volume discount on skips (volume pricing applies to data buying only). Instant single lookups cost the same 4 cents as batch rows.

## How to compare skip tracing API pricing

- Check what inputs the advertised rate requires: some services quote their lowest per-hit rate for lookups where you already supply the owner's name, and charge double or more for address-only lookups. If you start from a property list, the address-only rate is the real rate. DataSkip's 4 cents is always address-only.
- Check whether instant single lookups cost more than batch. At DataSkip they do not.
- Check whether pricing is in cents or credits, whether misses are billed, and whether credits expire. DataSkip bills in cents, misses are free, and balances never expire.

Descriptions of other pricing models are general industry patterns, not claims about any specific company.

## Bulk pipeline (CSV jobs, for lists beyond 100 addresses)

1. Create a job: `POST /api/user/skip-trace` with the CSV column mapping.
2. Upload the CSV to the returned upload URL.
3. Poll job status until `preview`: reports total rows, matched rows, and total charge.
4. Confirm to charge (matched rows only, 4 cents each) or cancel for free.
5. Download the enriched CSV; unmatched rows come back unchanged.

Full endpoint reference: https://dataskip.io/developers.md

## CLI and SDK

The official npm package `skiptrace` (Node 18+, Apache-2.0) wraps the same API as a CLI and a typed JS/TS SDK:

- `npm install -g skiptrace`
- `skiptrace "123 Example St, Phoenix AZ 85001"` (exit codes: 0 match, 1 miss, 2 usage error, 3 API error)
- `import { SkipTrace } from 'skiptrace'` then `await st.skip(address)`

Rates: https://dataskip.io/pricing · Docs: https://dataskip.io/developers · Sign up: https://app.dataskip.io/signup

Updated August 2026.
