BotRegistry dataset

398 robots · 143 manufacturers · 12 categories · data as of 2026-10-19

What this covers

The full data behind the BotRegistry comparator: one record per robot family, covering physical specs (height, weight, DOF, speed, battery, IP rating, compute), current pricing, manufacturer details, and where each spec was verified. This is the same data the comparator and its 398 individual robot pages render from — not a separate summary.

How it's compiled

Every record starts from the manufacturer's own product page, spec sheet, or press materials. A checking tool (verify_links.py, run by hand) re-fetches each source page, hashes its visible text, and flags drift; a variant's specs are only marked verification_method="fetched" in a pass that actually retrieved and read that page on verified_date. Records not yet independently re-checked are marked "backfilled" — adopted as a starting baseline with no verification claim attached, and checked first next time. No specification value is estimated, inferred, or generated by a model; a value BotRegistry could not confirm is left null, and the reason is recorded per record in unknown_fields (see the field dictionary below). Prices are different: a price marked price_type "estimated" is a published analyst, press or target figure, labelled as such.

License: CC BY 4.0. Free to use, share, and adapt — including commercially — with attribution to Sky Team Labs and a link back to skyteamlabs.com/robots/. Full license text: creativecommons.org/licenses/by/4.0.

Suggested citation:

Sky Team Labs. "BotRegistry robot dataset," version 2026-10-19. https://skyteamlabs.com/robots/dataset/. Licensed CC BY 4.0.

Download

dataset.json dataset.csv

398 records each. 398 of 398 records carry at least one null spec field (2940 null fields total, each with a stated reason — see unknown_fields below). No field is ever a guessed or estimated value.

Update cadence

Records are re-checked by hand, not on a fixed schedule. Each record's verified_date says when its source page was last read, and verification_method says whether it was read at all. This export regenerates from the same source files as the live pages every time the catalog is rebuilt, so it is never a separate hand-maintained copy and is never older than the catalog itself.

Fields (JSON and CSV share this schema)

FieldTypeUnitDescription
id string — Unique catalog slug, convention {manufacturer}-{model}.
name string — Display name.
manufacturer string — Manufacturer company name.
manufacturer_country string|null ISO 3166-1 alpha-2 Country of the manufacturer's headquarters.
manufacturer_website string|null — Manufacturer's official website.
category string — Robot type (BotRegistry taxonomy).
subcategory string|null — Free-form subcategory assigned by the catalog, not manufacturer-sourced. null = not categorized.
year_announced integer|null year Year the robot was first publicly announced.
status string — Best-case status across variants: available | limited | pre-order | development | discontinued.
price_from_usd number|null USD Lowest current price (each variant's newest priced entry) across variants that can be bought now (available, limited, pre-order); across all variants only if none of those has a price. Purchase prices win over other types. null = no published price ("contact us"), not a missing value.
price_from_type string|null — purchase | estimated | lease | monthly | annual | null. 'estimated' = an analyst, press or target figure, not a price anyone quoted for sale.
height_cm number|null cm Standing height.
weight_kg number|null kg Robot mass.
payload_kg number|null kg Maximum carried load.
dof integer|null count Total degrees of freedom.
max_speed_kmh number|null km/h Maximum locomotion speed.
max_speed_ms number|null m/s Maximum locomotion speed.
battery_wh number|null Wh Battery capacity.
battery_hours number|null hours Typical runtime, not maximum.
battery_swappable boolean|null — Whether the battery can be hot-swapped.
ip_rating string|null — Ingress protection rating, e.g. IP54.
operating_temp_min_c number|null °C Minimum rated operating temperature.
operating_temp_max_c number|null °C Maximum rated operating temperature.
compute string|null — Onboard compute platform name.
compute_tops number|null TOPS AI compute throughput.
certifications string[] — Regulatory certifications (e.g. CE, FCC).
locomotion string[] — Locomotion modes (e.g. bipedal walking, running).
use_cases string[] — Manufacturer-stated intended use cases.
sensor_count integer count Number of distinct sensor types listed for this robot.
source_url string|null — The manufacturer page whose spec section was read for the represented variant. Null only when verification_method is "none", or "backfilled" with no source recorded.
verified_date string|null ISO 8601 date Date source_url was checked (or the baseline-adoption date for a backfilled record).
verification_method string — fetched = this variant's own page was retrieved and read on verified_date. backfilled = pre-existing data adopted as a baseline, no independent verification claim. none = no variant/provenance data recorded for this robot.
verified_variant_id string|null — Which configuration/variant this record's specs and provenance represent (the "base" variant when one exists, otherwise the first listed).
last_updated string ISO 8601 date Date this robot's underlying record was last edited in the source catalog.
detail_page_url string — The BotRegistry page this record was derived from.
category_id string — Robot type id (one per robot: what the robot is). Names and descriptions: /robots/data/categories.json.
applications string[] — Application ids (zero or more: where the maker markets the robot for use). Names and descriptions: /robots/data/applications.json.
software_checked string|null ISO 8601 date Date the software and 3D model flags below were checked. null = not checked yet.
has_urdf boolean|null — true = a public a URDF robot description exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_mjcf boolean|null — true = a public a MuJoCo (MJCF) model exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_usd_isaac boolean|null — true = a public an NVIDIA Isaac Sim (USD) model exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_gazebo_sdf boolean|null — true = a public a Gazebo (SDF) model exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_cad boolean|null — true = a public a CAD model (STEP) exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_sdk boolean|null — true = a public a software development kit exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_ros boolean|null — true = a public a ROS 1 package exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_ros2 boolean|null — true = a public a ROS 2 package exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_robodk boolean|null — true = a public a RoboDK library entry exists for this robot; false = none found on software_checked; null = not checked. Links are not published.
has_sim_model boolean|null — true when any of has_urdf, has_mjcf, has_usd_isaac or has_gazebo_sdf is true. null = not checked.
unknown_fields object[] (JSON) / unknown_fields_note string (CSV) — One {field, reason} entry per DATASET_SPEC_FIELDS value left null. See the scope note above this table.

Changelog

Contact

Questions, corrections, or a spec you can verify that we have marked null? info@skyteamlabs.com.