A streaming jobs API for your own tools

The feed behind our alerts, as JSON and as a live stream. Free gives you a delayed portion. Pro gives you everything, in real time.

Get API accessComing soon

What each plan includes

What each plan includesFreePro
Freshness30 minutes behindReal time
PlatformsMostaql and FreelancerMostaql, Freelancer and Upwork
Results20 per page, 5 pages100 per page, no page limit
Requests30 per minute120 per minute
Live stream1 connection, checks every 20 seconds5 connections, checks every 3 seconds
Replay on connectLast 5 jobsLast 100 jobs

Try it

Send your key in the X-RapidAPI-Key header. Free responses include a hidden_from_you count, so you can see what an upgrade adds.

Endpoints

GET /api/jobs
Search and filter, paginated
GET /api/jobs/{id}
One job
GET /api/stream
Live feed of new jobs (Server-Sent Events)
GET /api/facets
Platforms and top skills
GET /api/stats
Jobs per platform
GET /api/plans
What each plan includes, no key needed

Search jobs

# Free sees a delayed portion, Pro sees everything
curl -H "X-RapidAPI-Key: $KEY" \
  "$HOST/api/jobs?q=react&min_budget=100&sort=recent"

Stream new jobs

curl -N -H "X-RapidAPI-Key: $KEY" \
  "$HOST/api/stream?replay=5&skill=Python"

event: ready
data: {"tier":"free","delay_minutes":30,"poll_seconds":20}

id: 412
event: job
data: {"source":"mostaql","title":"…","budget_max":500}

Stream from a browser or Node

const res = await fetch(`$${HOST}/api/stream`, {
  headers: { "X-RapidAPI-Key": KEY },
});
const reader = res.body
  .pipeThrough(new TextDecoderStream()).getReader();
for (;;) {
  const { value, done } = await reader.read();
  if (done) break;
  console.log(value); // event: job / data: {…}
}