Qualow API

Discover bookkeeping & accounting leads programmatically. Search by job title, location, industry, and technology stack.

https://api.qualow.com/api/v1

Get your API key

Authentication

Every request must include your API key in the X-API-Key header.

X-API-Key: qlw_your_key_here
  1. Create an account at qualow.com/signup
  2. Open your Dashboard
  3. Navigate to the API tab
  4. Click Generate Key

Endpoints

GET/leads

Search and filter leads. All filters are optional and combine with AND logic.

Query Parameters

job_titlestringSearch by job title. Partial match, case-insensitive. Example: "bookkeeper", "accounts payable"
citystringFilter by city. Partial match. Example: "Toronto", "Austin"
statestringFilter by state or province. Partial match. Example: "Ontario", "California"
countrystringFilter by country. Partial match. Example: "Canada", "United States"
industrystringFilter by company industry. Partial match. Example: "healthcare", "construction"
techstringSearch 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"
}
GET/leads/{id}

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.

FieldTypeDescription
idstringUnique lead identifier
employer_namestringCompany name
employer_websitestringCompany website URL
job_titlestringThe listed job title
job_citystringCity of the position
job_statestringState or province
job_countrystringCountry
job_is_remotebooleanWhether the position is remote-friendly
job_posted_atdatetimeWhen the job was originally posted
company_industrystringIndustry classification (e.g. Healthcare, Construction, Retail)
tech_signalsstringSoftware and tools the company uses (e.g. QuickBooks, Xero, Shopify)
tech_signals_metastringAdditional context about how tech signals were detected
category_bucketstringCategory (bookkeeper, accounts_payable, billing, etc.)
phonestringContact phone number
emailstringContact email address
decision_makerstringName and role of the key decision maker
socialsstringSocial media links (LinkedIn, Twitter, etc.)
business_summarystringAI-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

StatusDescription
401Missing or invalid API key
400Invalid query parameters
404Lead not found
429Rate limit exceeded
500Server 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.