Skip to content

Changes feed

GET /v1/changes?since={next_since}
  • since is the next_since from your previous call. Leave it out once, to start from now.
  • Any search filter, and fields, decide matches for each change. They never hide a change.
  • limit is 1 to 500 changes, 500 by default.

Every parameter is in the API reference.

Returns changes oldest first:

{
"changes": [
{ "change": "updated", "id": "bsj_8f3k2m9q", "matches": true, "job": { } },
{ "change": "updated", "id": "bsj_8f3k2mzz", "matches": false, "job": null },
{ "change": "closed", "id": "bsj_8f3k2n01", "matches": false, "job": null }
],
"next_since": "…",
"more": false
}
  • change is created, closed, or updated (anything else a board can see changed, including a job reopening).
  • matches is true when the job, as it is now, is open and passes your filters. A closed job never matches.
  • job is the full record when matches is true, otherwise null.
  • Every change is listed whatever your filters, so you hear about a job that left your filter or closed, not only jobs that match.
  • A job that changed several times appears once, in its latest state.
  • Call again with next_since until more is false. A page can be short, even empty, with more: true.
  • since values never expire. A board that was away for a month just pages through more changes.
  • A since this feed never handed out is a 409: start again from the first run.

Changes appear in the feed within about 15 seconds.

first run: s = next_since from /v1/changes (no since)
page through /v1/jobs?category=electrical&country=US, upsert every job
every hour: /v1/changes?since=s&category=electrical&country=US, until more is false
matches: upsert the job and show it
not matches (including every closed job): hide it if you have it
s = next_since

Always upsert by id: a created change can arrive for a job you already stored from your first pull.

Poll once an hour; once a day at the same hour also works. Backspin rechecks each employer about every six hours, so polling more often mostly returns nothing.