Snapshots
A snapshot is the newest weekly copy of every open job, one file for everything and one per country, as zstd-compressed JSON lines in the API's exact shape. For a first load of a whole country it is the same jobs as paging GET /v1/jobs, in one download, from Cloudflare's edge, not from our line.
The price
The same as the pages: every job in the file is charged once, at your plan's rate, when the link is made. The companies file of the same folder comes free. A second link for the same file inside 24 hours is free. A plan too small for the file gets 429 plan_exhausted and nothing is charged.
A buyer who pays for a snapshot and then pages the same jobs through GET /v1/jobs pays twice: load the snapshot, then read events.
Three calls
curl -s https://api.jobmonkey.ai/v1/snapshots -H 'Authorization: Bearer cb_live_XXXXXXXX'
Lists the newest snapshot: its stamp, taken_at, the ledger seq to read events from, and per file the jobs, bytes and sha256.
curl -s -X POST https://api.jobmonkey.ai/v1/snapshots/20261107-191824Z/canada -H 'Authorization: Bearer cb_live_XXXXXXXX'
Answers url and companies_url, each good for 24 hours, and charged.
curl -sL "$URL" -o canada.jsonl.zst && zstd -d canada.jsonl.zst
A country file is concatenated frames in one stream; plain zstd -d reads it. Check the sha256.
Then read events
The snapshot's seq is your first cursor: GET /v1/events?country=Canada&cursor=<seq> gives everything that moved since the file was written. Held closures are in the file, marked by closing_since, for the same reason they are in the pages.
import json, subprocess, urllib.request
KEY, API = "cb_live_XXXXXXXX", "https://api.jobmonkey.ai"
def call(path, method="GET"):
req = urllib.request.Request(API + path, method=method, headers={"Authorization": f"Bearer {KEY}"})
with urllib.request.urlopen(req) as r:
return json.load(r)
snap = call("/v1/snapshots")
link = call(f"/v1/snapshots/{snap['snapshot']['stamp']}/canada", "POST")
urllib.request.urlretrieve(link["url"], "canada.jsonl.zst")
subprocess.run(["zstd", "-d", "-f", "canada.jsonl.zst"], check=True)
with open("canada.jsonl") as f:
for line in f:
store(json.loads(line))
cursor = snap["snapshot"]["seq"]
The free sample file is 1,000 jobs in the same shape, gzipped, no key: test your parser on it first.