The Quality Leads Solution API provides programmatic access to our enterprise data infrastructure. Fetch, filter, stream, and manage lead data across all 8 verticals in real time. All API access requires NDA execution and approval.
API access is restricted to NDA-approved operators only. If you haven't executed your NDA, start here. Unauthorized API calls will result in immediate key revocation.
https://api.leadss.co/v2All API requests must include your API key in the Authorization header. API keys are issued after NDA execution and qualification approval. Keys are scoped to specific verticals and delivery methods approved for your account.
Include your API key in every request header. Never expose your key in client-side code or public repositories.
Authorization: Bearer qls_live_YOUR_API_KEY_HERE Content-Type: application/json X-Account-ID: acc_your_account_id
curl https://api.leadss.co/v2/leads \ -H "Authorization: Bearer qls_live_YOUR_KEY" \ -H "Content-Type: application/json"
Get your first batch of leads in under 5 minutes. Follow these steps after receiving your API key.
Request NDA at /nda.html. Approval takes 1–3 business days. You'll receive your API key via secure email.
Store your key as an environment variable: QLS_API_KEY=qls_live_xxx. Never hardcode it.
Fetch your first batch of leads from your approved vertical using the example below.
Register a webhook endpoint to receive new leads in real time as they become available.
const response = await fetch('https://api.leadss.co/v2/leads?vertical=mca&limit=100', { headers: { 'Authorization': `Bearer ${process.env.QLS_API_KEY}`, 'Content-Type': 'application/json' } }); const { leads, total, cursor } = await response.json(); console.log(`Received ${leads.length} leads of ${total} available`);
import requests, os response = requests.get( 'https://api.leadss.co/v2/leads', headers={'Authorization': f"Bearer {os.environ['QLS_API_KEY']}"}, params={'vertical': 'mca', 'limit': 100} ) data = response.json() print(f"Received {len(data['leads'])} leads")
Rate limits are applied per API key on a rolling 60-second window. Limits vary by account tier and vertical access level.
| Account Tier | Requests / Min | Records / Day | Concurrent Streams |
|---|---|---|---|
| Starter | 60 | 10,000 | 1 |
| Professional | 300 | 100,000 | 5 |
| Enterprise | 1,000 | Unlimited | 25 |
| Custom / Wholesale | Custom | Custom | Custom |
When rate limited, the API returns HTTP 429 with a Retry-After header indicating seconds to wait. Implement exponential backoff in production.
Fetch a paginated batch of leads from your approved vertical(s). Records are returned in descending order by verification timestamp. Cursor-based pagination for high-volume requests.
| Parameter | Type | Required | Description |
|---|---|---|---|
| vertical | string | Required | One of: mca, insurance, solar, dme, cdr, legal, debt, finance |
| limit | integer | Optional | Records per page. Default: 100. Max: 5,000. |
| cursor | string | Optional | Pagination cursor from previous response next_cursor field. |
| state | string | Optional | ISO state code to filter by geography. E.g. FL, TX, CA |
| max_age_hours | integer | Optional | Max record age in hours. Default: 72. Min: 1. |
| dnc_checked | boolean | Optional | Only return records with DNC verification. Default: true. |
{
"status": "success",
"total": 14500,
"count": 100,
"next_cursor": "cur_7xK9mN2pQ...",
"leads": [
{
"id": "lead_8fXm2K...",
"first_name": "James",
"last_name": "Morrison",
"phone": "+15551234567",
"email": "jm@businessname.com",
"business_name": "Morrison Logistics LLC",
"state": "FL",
"monthly_revenue_est": 45000,
"years_in_business": 4,
"carrier_verified": true,
"dnc_status": "clean",
"litigator_flag": false,
"opt_in_timestamp": "2026-03-14T09:22:11Z",
"opt_in_source": "form://businessfunding.net",
"credit_tier": "A",
"vertical": "mca"
}
]
}Batch-check up to 10,000 phone numbers against the National DNC Registry, state-level registries, and our proprietary litigator network database. Returns per-number status and risk score.
| Body Field | Type | Required | Description |
|---|---|---|---|
| phones | array[string] | Required | Array of E.164 formatted phone numbers. Max 10,000 per request. |
| check_litigator | boolean | Optional | Include litigator network check. Default: true. |
| state_registries | boolean | Optional | Check state-level DNC lists. Default: true. |
{
"phones": ["+15551234567", "+15559876543"],
"check_litigator": true,
"state_registries": true
}{
"checked": 2,
"results": [
{
"phone": "+15551234567",
"dnc_status": "clean",
"litigator": false,
"risk_score": 2,
"safe_to_call": true
},
{
"phone": "+15559876543",
"dnc_status": "registered",
"litigator": true,
"risk_score": 98,
"safe_to_call": false
}
]
}The API uses standard HTTP status codes. All error responses include a machine-readable error_code and human-readable message.
| Status | Error Code | Description |
|---|---|---|
| 200 | success | Request completed successfully |
| 400 | invalid_params | Missing or invalid request parameters |
| 401 | unauthorized | API key missing, invalid, or revoked |
| 403 | vertical_not_approved | Vertical not in your NDA scope |
| 429 | rate_limited | Too many requests. Use Retry-After header |
| 500 | internal_error | Server error. Contact support@leadss.co |
Official SDKs are available for NDA-approved operators. Contact your account manager or reach us at contact page to request SDK access.
Execute your NDA to receive your API key and full SDK documentation with integration examples for your stack.
Execute NDA & Get API Key