Developers / CLI · SDK · REST

Skip trace in
one command.

Turn a US property address into the owner's name, phone numbers with DNC flags, emails, and mailing address. One npm package gives you a CLI and a typed JS/TS SDK; the REST API works from any language. It is the same flat 4¢ per match as the dashboard rate sheet, and misses are always free.

npm install -g skiptrace
Get an API Key

For AI Agents

Vibe coder?

Copy a ready-made brief with the endpoint, auth, SDK, and error handling, then paste it into your AI coding agent and let it wire up DataSkip for you.

  • Claude
  • Codex
  • Cursor

Everything your agent needs, in one paste.

01 / CLI

From your terminal

Create an API key in the dashboard (Settings → API), save it once, then trace addresses straight from your shell. Exit codes are script-friendly: 0 match, 1 miss, 2 usage error, 3 API error.

$ skiptrace config set-key pc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

$ skiptrace "123 Example St, Phoenix AZ 85001"

$ skiptrace lookup "44 Pine St" --city Bridgewater --state MA --zip 02324

$ skiptrace "123 Main St, Austin TX 78701" --json | jq '.phones'

02 / npm package

From your code

The skiptrace package imports as a typed library. The API key falls back to the SKIPTRACE_API_KEY env var, then the saved CLI config, so new SkipTrace() with no arguments just works.

skiptrace · node 18+
import { SkipTrace, ApiError } from 'skiptrace';

const st = new SkipTrace({ apiKey: process.env.SKIPTRACE_API_KEY });

try {
  const result = await st.skip('123 Example St, Phoenix AZ 85001');
  if (result.found) {
    console.log(result.contact.fullName, result.phones, result.emails);
  }
} catch (err) {
  if (err instanceof ApiError && err.status === 402) {
    // insufficient balance
  }
}

03 / REST API

From anywhere

One endpoint, any language, with your API key as a Bearer token. A hit charges 4¢ and returns the full contact; a miss returns found: false and charges nothing.

HTTP · Bearer auth

POST https://app.dataskip.io/api/v1/skip-trace

$ curl -X POST https://app.dataskip.io/api/v1/skip-trace \
    -H "Authorization: Bearer pc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
    -H "Content-Type: application/json" \
    -d '{
      "address": "44 Pine St",
      "city": "Bridgewater",
      "state": "MA",
      "zip": "02324"
    }'
{
  "success": true,
  "found": true,
  "charged": 4,
  "contact": {
    "firstName": "J•••",
    "lastName": "C•••••",
    "fullName": "J••• C•••••",
    "propertyAddress": "44 Pine St",
    "propertyCity": "Bridgewater",
    "propertyState": "MA",
    "propertyZip": "02324",
    "mailingAddress": "44 Pine St",
    "mailingCity": "Bridgewater",
    "mailingState": "MA",
    "mailingZip": "02324"
  },
  "phones": [
    { "number": "(•••) •••-0182", "type": "mobile", "dnc": false },
    { "number": "(•••) •••-4415", "type": "landline", "dnc": true }
  ],
  "emails": ["j•••••@•••••.com"]
}
StatusMeaning
200Lookup ran. Check found: a miss is still 200 with contact: null and no charge.
400Missing or invalid address in the JSON body.
401Missing or invalid API key.
402Insufficient balance to cover a match. Top up in the dashboard.
429Rate limited. Retry after the indicated delay.

Ship it in an
afternoon.

Get Your API Key

4¢ per match · misses free · support@dataskip.io