Qualow API
Discover bookkeeping & accounting leads programmatically. Search by job title, location, industry, and technology stack.
https://api.qualow.com/api/v1
Authentication
Every request must include your API key in the X-API-Key header.
X-API-Key: qlw_your_key_here- Create an account at qualow.com/signup
- Open your Dashboard
- Navigate to the API tab
- Click Generate Key
Endpoints
Search and filter leads. All filters are optional and combine with AND logic.
Query Parameters
job_title | string | Search by job title. Partial match, case-insensitive. Example: "bookkeeper", "accounts payable" |
city | string | Filter by city. Partial match. Example: "Toronto", "Austin" |
state | string | Filter by state or province. Partial match. Example: "Ontario", "California" |
country | string | Filter by country. Partial match. Example: "Canada", "United States" |
industry | string | Filter by company industry. Partial match. Example: "healthcare", "construction" |
tech | string | Search by technology, software, or tools the company uses. Searches both tech_signals and tech_signals_meta. Example: "quickbooks", "xero", "shopify" |
Example Request
curl "https://api.qualow.com/api/v1/leads?job_title=bookkeeper&country=Canada&tech=quickbooks" \
-H "X-API-Key: qlw_your_key_here"Example Response
{
"count": 23,
"leads": [
{
"id": "abc-123",
"employer_name": "Maple Tax Services",
"employer_website": "https://mapletax.ca",
"job_title": "Bookkeeper",
"job_city": "Toronto",
"job_state": "Ontario",
"job_country": "Canada",
"job_is_remote": false,
"job_posted_at": "2026-04-08T09:00:00Z",
"company_industry": "Accounting",
"tech_signals": "QuickBooks, Xero, HubSpot",
"tech_signals_meta": "QuickBooks Online detected via job description",
"category_bucket": "bookkeeper",
"phone": "+1-416-555-0199",
"email": "hiring@mapletax.ca",
"decision_maker": "Sarah Chen, Office Manager",
"socials": "linkedin.com/company/mapletax",
"business_summary": "Small accounting firm specializing in personal and small business tax preparation in the GTA."
}
],
"timestamp": "2026-04-12T10:00:00Z"
}Retrieve a single lead by ID. Returns the same fields as the list endpoint.
Response Fields
Every lead returned by the API includes these fields.
| Field | Type | Description |
|---|---|---|
id | string | Unique lead identifier |
employer_name | string | Company name |
employer_website | string | Company website URL |
job_title | string | The listed job title |
job_city | string | City of the position |
job_state | string | State or province |
job_country | string | Country |
job_is_remote | boolean | Whether the position is remote-friendly |
job_posted_at | datetime | When the job was originally posted |
company_industry | string | Industry classification (e.g. Healthcare, Construction, Retail) |
tech_signals | string | Software and tools the company uses (e.g. QuickBooks, Xero, Shopify) |
tech_signals_meta | string | Additional context about how tech signals were detected |
category_bucket | string | Category (bookkeeper, accounts_payable, billing, etc.) |
phone | string | Contact phone number |
email | string | Contact email address |
decision_maker | string | Name and role of the key decision maker |
socials | string | Social media links (LinkedIn, Twitter, etc.) |
business_summary | string | AI-generated summary of the company and what they do |
Rate Limits
Each request returns up to 25 leads. API keys are rate-limited to 25 requests per day. Limits reset at midnight UTC. If you exceed the limit, you'll receive a 429 response.
Higher limits are available on paid plans. Contact us if you need more throughput.
Error Codes
| Status | Description |
|---|---|
| 401 | Missing or invalid API key |
| 400 | Invalid query parameters |
| 404 | Lead not found |
| 429 | Rate limit exceeded |
| 500 | Server error |
Code Examples
curl
curl "https://api.qualow.com/api/v1/leads?industry=healthcare&tech=quickbooks" \
-H "X-API-Key: qlw_your_key_here"Python
import requests
resp = requests.get(
"https://api.qualow.com/api/v1/leads",
headers={"X-API-Key": "qlw_your_key_here"},
params={
"country": "Canada",
"tech": "xero",
},
)
data = resp.json()
print(f"{data['count']} leads found")
for lead in data["leads"]:
print(lead["employer_name"], "-", lead["tech_signals"])Node.js
const res = await fetch(
"https://api.qualow.com/api/v1/leads?job_title=bookkeeper&state=Ontario",
{ headers: { "X-API-Key": "qlw_your_key_here" } }
);
const data = await res.json();
console.log(`${data.count} leads found`);
data.leads.forEach((lead) =>
console.log(lead.employer_name, lead.company_industry)
);AI Tool Schema (Claude / GPT function calling)
{
"name": "qualow_search_leads",
"description": "Search for bookkeeping and accounting leads by location, industry, and tech stack.",
"parameters": {
"type": "object",
"properties": {
"job_title": {
"type": "string",
"description": "Job title to search for (e.g. bookkeeper, accounts payable)"
},
"city": {
"type": "string",
"description": "City filter"
},
"state": {
"type": "string",
"description": "State or province filter"
},
"country": {
"type": "string",
"description": "Country filter"
},
"industry": {
"type": "string",
"description": "Company industry (e.g. healthcare, construction)"
},
"tech": {
"type": "string",
"description": "Technology or software the company uses (e.g. quickbooks, xero, shopify)"
},
}
}
}AI Agent Best Practices
Use filters
Narrow your queries with filters like tech=quickbooks or country=Canada to get the most relevant leads. Each request returns up to 25 leads.
Workflow pattern
Set up a trigger in N8N, Make, Zapier, or a Python script. Call GET /leads?tech=quickbooks&country=Canada, process the returned leads, and use the lead IDs to track which ones you've already handled.