Start here
Five minutes, three steps, nothing to install beyond curl.
1. Get a free key
Sign up with your email. Click the link in the mail, set a password, and your first key is on the screen, once. Copy it somewhere safe: we keep only its first twelve characters.
The free plan has no end date: 250 full jobs and 25 full-feed calls a month, 10 calls a day on the free routes (events, updates, companies, counts). No card.
2. Count before you load
curl -s 'https://api.jobmonkey.ai/v1/jobs/count?country=Canada' \
-H 'Authorization: Bearer cb_live_XXXXXXXX'
{"jobs": 81137, "held": 1904, "companies": 2874, "as_of": "2026-11-07T19:35:59Z"}
Counts are free. held are closures we are still checking (see Held closures); jobs includes them.
3. Read your first page
curl -s 'https://api.jobmonkey.ai/v1/jobs?country=Canada&limit=2' \
-H 'Authorization: Bearer cb_live_XXXXXXXX'
The answer holds two full jobs, next (the cursor for the next page), more, ledger_seq and charged: 2. Two of your 250 free jobs are used. Every field of a job is in Fields.
The same in Python, standard library only:
import json, urllib.request
KEY = "cb_live_XXXXXXXX"
req = urllib.request.Request("https://api.jobmonkey.ai/v1/jobs?country=Canada&limit=2",
headers={"Authorization": f"Bearer {KEY}"})
with urllib.request.urlopen(req) as r:
page = json.load(r)
for job in page["jobs"]:
print(job["job_guid"], job["title"], job["company"])
print("next:", page["next"], "ledger_seq:", page["ledger_seq"])
What is next
- Your first sync in three calls: load once, then read events, then fetch by GUID.
- The cursor: why it never skips and how to keep it.
- Prices: what is charged (one thing) and what is not (everything else).
Every answer carries X-Request-Id; quote it when you write to [email protected].