“Quick answerA skip tracing API turns a property address into the owner and a way to reach them, inside your own code. Ours does it with 3 endpoints. An owner lookup costs 4 credits per address, an associated-people call costs 1 credit, and a person-details call costs 1 credit. The order you call them in sets the bill. Calling all 3 on every address costs 6 times what calling the first one does.

Most skip tracing is bought as a list. You upload addresses, wait, and download a file of names and numbers.
That shape doesn’t fit software. The same argument applies across property data APIs. A trace that runs when a user clicks a button has to be an API call. So does one that runs overnight, when a property clears a screen.
This post is about building it in. If you are choosing a vendor to buy lists from, read our guide to skip tracing data providers instead.
The 3 endpoints
Each one answers a different question, and they are priced separately.
| Endpoint | What it takes | What it returns | Credits |
|---|---|---|---|
| Owner lookup | A full US property address | The legal owner, with contact methods | 4 |
| Associated people | A full US property address | Everyone the address links to, each with an ID | 1 |
| Person details | A person ID from the call above | The full record for that 1 person | 1 |
Our published API prices, checked 11 October 2026.
Authentication is a token header on every call. Errors charge 0 credits. If you would rather prototype before writing code, MCP against a REST API sets out the trade-off. A 400, 401, 402, or 404 charges 0 credits, so a malformed address wastes a round trip and not a credit.

What a response actually contains
A provider that returns a name has done a tenth of the job. The owner lookup returns the owner of record plus the fields that decide whether the call should be made at all.
- The owner of record. One or two people, with the mailing address when it differs from the property.
- Phone numbers with a history. Each carries its type, the carrier, whether the provider tested it, whether it was reachable, the date it was last reported, and a confidence score.
- Email addresses with a verification flag. Verified means the provider checked the mailbox, not that anyone reads it.
- Do-not-call, litigator, and deceased flags. 3 booleans that should gate your dialler before anything else does.
Those flags are the part worth writing code around. A reachable mobile number sitting on a do-not-call registration is not a lead. A litigator flag marks someone with a history of suing over unwanted contact.
Match rate sells the API. The flags are what stop it becoming a legal problem.
Call them in this order
Running the full chain on every address is the most common and most expensive mistake.
- Owner lookup first. Most addresses stop here, at 4 credits.
- Associated people when you can’t reach the owner. 1 credit returns everyone linked to the address, including residents, relatives, and former owners.
- Person details on one ID. 1 credit returns current and previous addresses with first-seen and last-seen dates, phones with connectivity, emails with verification, relatives and associates.
Person details do not accept a free form name. The ID must come from an associated people call, which is what keeps step 3 cheap and step 2 necessary.
The documented case for step 2 is a deceased owner. The people worth contacting are the family linked to the address, not the name on the deed.

What 1,000 addresses actually cost
The difference between the two call patterns is easiest to see on a round number.
Run all 3 endpoints on 1,000 addresses, and the bill is 6,000 credits. 4,000 for the owner
lookups, 1,000 for the associated people calls, 1,000 for the person details.
Run them in order, and most addresses stop at the first call. Say 1 in 5 fails to reach the
owner. That is 4,000 credits for the lookups, 200 for the wider net on the failures, and 100
more for the records you actually open. 4,300 instead of 6,000.
The saving grows with volume, and it is cheap to implement. It is conditional, not integration.
Caching, and what it saves
A first call for a given person ID hits the upstream provider. Repeat calls on the same ID within your own history are not charged again. Building a record over several sessions costs one credit, not one per session.
Identical calls from other accounts hit a shared cache and still cost 1 credit. The speed is the gift, not the data.
The practical effect is that enrichment is cheap and discovery is not. Cache the person ID in your own store the moment you get it.

Watching what it costs
Credit spend on a trace pipeline is invisible until someone looks. The portal breaks usage down by endpoint, which is where a runaway loop shows up first.

Here is a short video on what a single property report returns.
Errors and retries
4 of the 5 error codes charge 0 credits, which makes defensive coding cheap.
- 400. A required field is missing or failed validation. Fix the payload.
- 401 and 402. Authentication failed, or the account has no credits. Neither is retryable.
- 404. The address or ID did not resolve. Treat it as a miss, not a fault.
- 502. The upstream service is unavailable. Safe to retry with exponential backoff.
Only the 502 deserves a retry. Retrying a 404 burns time and never returns a different answer.
What the data is not
2 limits belong in the product itself, where a user can see them.
Skip-trace records are research-grade aggregation of public records. They are not certified for legal proceedings, so do not present them as verified identity.
Treat anything older than 12 months as stale for high-stakes outreach. The last-reported date on a phone number is the field that tells you, and it is worth surfacing in your own interface.
Screen before you trace
The cheapest call is the one you never make. A property screen cuts the address list before any of the 3 endpoints run.
Filters on property condition, price, and yield show the match count before you run them. The preview
returns the match count and the cost before a search charges anything.
Cleveland carried 1,099 active listings on 11 October 2026. 243 of them sat under $100,000,
Trace the 78 that survive 2 filters, and the same step costs 312. Pass only the survivors to the trace. Our investment property search strategies cover how to build that screen.
Ask Sage before you build
Sage is our AI assistant, and it runs the same screens from a plain-language question inside the AI tool you already use.
Connect Homesage.ai to Claude, ChatGPT, Gemini, or Perplexity through our Real Estate MCP and prototype the pipeline before you write it.
Setting this up in ChatGPT takes 3 steps. Connect to ChatGPT in the MCP portal, then ask in plain language.
Key takeaways
- 3 endpoints cover skip tracing: owner lookup at 4 credits, associated people at 1, person details at 1.
- Calling all 3 for every address costs 6 times as much as calling the first one.
- Person details needs an ID from an associated-people call. There is no free-form name lookup.
- Repeat calls on an ID you already hold are not charged again within your own history. Cache the ID.
- Do-not-call, litigator, and deceased flags belong in front of your dialer.
- 4 of the 5 error codes cost 0 credits, and only the 502 is worth retrying.
Conclusion
Pick the integration that matches where the work happens. A standalone platform suits a team whose tracing is its own task. An API earns its place when the trace runs beside the property research.
Then design for the order, not the match rate. Owner lookup first, the wider net only when it fails, the full record on one person at a time.
Cache every ID you receive and gate every number on the flags that came with it. Those two habits add no credits and remove most of the bill and most of the risk.
Start with a Homesage.ai account and run one address through all 3 endpoints.

Jo May 21, 2026
Thanks for sharing this valuable information
Emma May 22, 2026
Great Read!
Robin May 22, 2026
Very helpful!
Peter May 26, 2026
Good Skiptracing data is essential for finding good deals