One call. SOS + USDOT + OFAC + UCC + licenses. $0.05.
Every /api/v1/lookup returns the Secretary of State
entity record, USDOT/FMCSA carrier data, OFAC SDN screening, UCC
central-filing search for secured creditors, and state contractor /
professional-license registry — bundled into a single JSON response.
Built for commercial-finance underwriting, fraud teams, and developers
building KYB flows.
Quick start
# Get your API key at /account/api-key
KEY="vfs_your_key_here"
curl -X POST https://verifysos.com/api/v1/lookup \
-H "x-api-key: $KEY" \
-H "Content-Type: application/json" \
-d '{
"entity_name": "JNG Trucking LLC",
"state": "CA",
"include_safer": true
}'
Sample response (200)
{
"success": true,
"data": {
"state": "CA",
"entityName": "JNG TRUCKING LLC",
"entityId": "202359218946",
"status": "ACTIVE",
"entityType": "Limited Liability Company - CA",
"formationDate": "2023-10-03",
"yearsInBusiness": 2,
"registeredAgent": {
"name": "JUAN NAVARRO GONZALEZ",
"address": "18126 10TH ST, BLOOMINGTON, CA 92316"
},
"principalAddress": "18126 10TH ST, BLOOMINGTON, CA 92316",
"officers": [
{"name": "JUAN NAVARRO GONZALEZ", "title": "MANAGER"}
],
"sosUrl": "https://bizfileonline.sos.ca.gov/search/business/...",
"usdot": {
"dotNumber": "4142050",
"mcNumber": "MC-1588327",
"status": "ACTIVE",
"legalName": "JNG TRUCKING LLC",
"physicalAddress": "BLOOMINGTON, CA",
"fleetSize": 1
},
"ofac": { "clear": true, "hits": [] },
"ucc": {
"state": "CA",
"source": "CA Secretary of State UCC (Kepler)",
"searchUrl": "https://uccconnect.sos.ca.gov/search/debtor",
"activeCount": 0,
"totalCount": 0,
"filings": []
},
"licenses": {
"state": "CA",
"board": "CA CSLB",
"searchUrl": "https://www.cslb.ca.gov/onlineservices/CheckLicenseII/...",
"count": 0,
"licenses": []
}
},
"cost": 0.05,
"scraped_at": "2026-05-28T16:42:11Z"
}
Rate limits
Each API key is rate-limited to 60 requests per minute by default. Need more throughput? Contact us — we'll bump your limit once you cross 1,000 lookups/day.
Every API response includes the standard X-RateLimit-*
headers so your client can throttle gracefully:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1748470823
Retry-After: 18 (only on 429)
A 429 Too Many Requests response includes
Retry-After in seconds — wait that long, then retry.
Endpoints
POST /api/v1/lookup
Look up a business entity by name + state. Bundles USDOT/OFAC.
| Field | Type | Required | Notes |
|---|---|---|---|
entity_name | string | yes | 2-200 chars |
state | string | yes | 2-letter US state code |
include_safer | boolean | no (default true) | Set false for non-trucking deals to skip the USDOT lookup |
include_ofac | boolean | no (default true) | Always runs — flag retained for compatibility |
200 — Entity found (charged $0.05).
404 — Not found (no charge).
400 — Bad request.
401 — Missing or invalid x-api-key.
500 — Scraper error (no charge).
GET /api/v1/states
Returns every supported state + automation status. No auth required.
{
"success": true,
"count": 51,
"states": [
{"code": "AK", "name": "Alaska", "status": "active",
"landingUrl": "https://verifysos.com/states/alaska"},
...
]
}
GET /api/v1/health
Lightweight health check. Returns version + commit SHA. No auth.
Pricing
- $0.05 per successful lookup — covers SOS + USDOT + OFAC + DBA county routing in one call
- 404 not-found is free — typo queries don't cost
- No subscription, no monthly minimum — pay only for successful lookups
- Volume discounts — contact us when you cross 10K/month
Other SOS APIs make you pay per call AND give you raw JSON only — no USDOT, no OFAC, no UCC, no contractor licenses, no merged PDF packet. We bundle all of it into the same response for one flat monthly rate — purpose-built for credit underwriting on trucking + construction + transportation deals.
| Provider | Per call | What's bundled |
|---|---|---|
| VerifySOS | $0.05 | SOS + USDOT + OFAC + UCC + contractor licenses |
| OpenCorporates | $0.10–$0.50 | SOS only |
| Cobalt Intelligence | $0.50–$2.00 | SOS + officers |
| Middesk | $1.00+ | SOS + KYB orchestration |
Coverage
Currently supported states (51):
Ready to integrate?
Sign up for an account, generate an API key, start making calls.
Create an account →