RobotTraining.jobs

Search open robot training jobs (robot teleoperation, demonstration data collection, at-home video recording, robot QA, robot fleet operations, autonomous vehicle and drone operator roles) from about 60 employers, with the hourly pay each role advertises. Updated daily from the employers' own job feeds.

Hosted MCP Server

npx add-mcp 'https://robottraining.jobs/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Robot training jobs and pay, as open data

Everything RobotTraining.jobs counts is yours to reuse at no cost: today's open robot training roles, split by kind of work and employer, and the hourly rates those roles post. It ships as plain JSON and CSV over HTTPS. There is no key and no account, any website can read it, and it refreshes daily.

roles open today

Data updated 16 hrs ago

Need more than today's totals? The raw record of every role we have tracked since 12 Sep 2026 (title, employer, place, kind of work, stated pay, first and last day open), a weekly feed of new and closed roles, or a custom cut are available on request.

Endpoints

Three files. Each is a single GET.

The files and the pages that display them come from one daily pass over each employer's own job feed, so the two always match.

Open roles

GET /roles.json

A count of robot training roles open at this moment, split by kind of work and by employer, plus how many first appeared in the past 7 days and in each recent week. Only totals are included: no single role is listed in the file.

name, description

Title and summary of the dataset.

source

The site page showing these exact figures.

license

CC BY 4.0.

measurement_technique

The measurement method behind the figures.

updated

Time of the latest job feed read, in ISO 8601 and UTC.

temporal_coverage

Date the figures refer to, written YYYY-MM-DD. Use this date in citations.

totals.open_roles

Total open roles over all the employers we read.

totals.platforms_live

Count of employers and programs showing one or more open roles.

totals.new_last_7d

Roles that first appeared within the past 7 days and remain open.

recent_market_momentum.weekly[]

New roles per recent ISO week (week_start, new_roles), plus the weekly average.

open_by_work_type[]

slug, label, open_count, plus the pay fields described below when three or more employers post a rate (null when fewer do).

open_by_platform[]

slug, name, open_count.

Pay by kind of work

GET /pay.json

Advertised hourly rates for robot training roles, grouped by kind of work. A kind of work only appears once three or more employers post a rate for it, which keeps any single employer's rate card from passing as the market rate.

name, description

Title and summary of the dataset.

source

The site page showing these exact figures.

license

CC BY 4.0.

measurement_technique

The measurement method behind the figures.

updated

Time of the latest job feed read, in ISO 8601 and UTC.

temporal_coverage

Date the figures refer to, written YYYY-MM-DD. Use this date in citations.

pay_by_work_type[].slug, label

The kind of work (for example robot teleoperation, egocentric capture, AV and drone operation).

currency, unit

USD, per hour.

median

Median advertised hourly rate.

typical_low, typical_high

Advertised rates at the 25th and 75th percentile.

rate_samples

Number of unique advertised rates counted once relistings are dropped.

platforms

Employers advertising those rates.

open_total, unpriced

Open roles in that kind of work, and the number that give no rate.

Pay by kind of work, CSV download

GET /pay.csv

Identical rows to /pay.json, delivered as a dated CSV file that opens in any spreadsheet app.

Sample request

curl -s https://robottraining.jobs/roles.json

const pay = await fetch("https://robottraining.jobs/pay.json").then((r) => r.json());
console.log(pay.pay_by_work_type);

Research reports

Download the research report figures

You can pull any research report in full or figure by figure. Append?edition=YYYY-MM to get a frozen monthly edition, or?figure= plus a figure's id to get a single table. In the CSV, each published value sits on its own line with five columns: figure, row, measure, unit and value.

For AI assistants

Query robot training jobs from Claude, ChatGPT or another MCP client

This data is also served as a remote MCP server. An AI assistant can look through open roles and pull the pay figures, and each role it returns carries a link back here for applying. No key or account needed.

Endpoint (Streamable HTTP transport)

https://robottraining.jobs/api/mcp

search_robot_training_jobs

Finds open roles by keyword, kind of work, employer, country or minimum hourly rate, and returns each one with its pay and an apply link.

get_robot_training_pay

Returns the /pay.json figures: median and typical hourly pay per kind of work.

get_robot_training_market

Returns the /roles.json figures: open roles per kind of work and employer, with an optional single-country filter.

Claude users: open Settings, then Connectors, then Add custom connector. For clients set up through a config file, such as Cursor, VS Code and Claude Code, paste this:

{
  "mcpServers": {
    "robottraining-jobs": { "url": "https://robottraining.jobs/api/mcp" }
  }
}

Listed in the official MCP Registry as jobs.robottraining/robot-training-jobs, so clients and directories that read the registry find it by that name.

Terms

Reuse it freely. Just credit us.

  • License: CC BY 4.0. Name RobotTraining.jobs as the source, link to our pay report, and include the temporal_coverage date.
  • Access: HTTPS only, and no API key. CORS is on, so a browser on any origin can fetch the files. The OpenAPI spec lives at /openapi.json.
  • Freshness: we read the feeds daily, so polling more often just returns identical numbers. A cache of a few hours is plenty.
  • Method: the rules for counting rates, the roles we leave out, and the reason a rate needs three employers are all set out in our pay methodology.

Want the data sliced by country, employer or kind of work, or going back further? Write to hello@robottraining.jobs.