Quickstart
# 1. Create a free key at agentroster.ca/account → “API access”
# 2. Counts are free — how many Top Producer brokers in Durham?
curl "https://agentroster.ca/api/v1/count?region=Durham&producer_tier=Top%20Producer&is_broker=Y" \
-H "Authorization: Bearer ar_your_key_here"
# → {"count": 63, "one_time_csv_price_cad": 19, ...}
# 3. Pull the rows (1 credit each)
curl "https://agentroster.ca/api/v1/agents?region=Durham&producer_tier=Top%20Producer&is_broker=Y&limit=100" \
-H "Authorization: Bearer ar_your_key_here" Endpoints
Auth: Authorization: Bearer ar_… or X-API-Key header. All responses JSON. Fair use: keep it under ~60 requests/minute.
Filters (query params on /count and /agents)
Recipes
Clay — enrich or source rows
Add an HTTP API column → GET
https://agentroster.ca/api/v1/agents?city={{City}}&limit=25
with header Authorization: Bearer ar_…. Map agents[].email /
.phone / .brokerage into columns. Use /count first
(free) to size a market before spending credits.
Zapier / n8n / Make — new-agent automation
Poll /api/v1/events?type=new_agent on a schedule (weekly matches our scan
cadence; dedupe on id) and pipe every new licensee in your market straight
into your CRM, cold-email tool or Slack. Requires an active
Signals or
Brokerage Intel
subscription on the key's email — the API is just another way to receive what you already pay for.
Plain code
const res = await fetch(
'https://agentroster.ca/api/v1/agents?region=Calgary&website_type=custom&limit=200',
{ headers: { Authorization: `Bearer ${process.env.AGENTROSTER_KEY}` } }
);
const { agents, credits_remaining } = await res.json(); Credits
1 credit = 1 contact row from /agents. Counts, metadata and the events feed never use credits. Buy from your account page — credits never expire.
Need bigger volume or a partnership (Clay data provider, reseller)? Email hello@agentroster.ca.