Developer API

A free, read-only JSON API of everything on this site β€” every AeroTech, Cesaroni & Loki motor we track, with per-vendor stock and pricing. It's plain static files on a CDN, so:

Endpoints

Base URL https://motor.fusionspace.co/api/v1/

Motor shape

Every payload carries schema_version (currently 1) and generated_at. Prices are integer cents.

{
  "id": 1234,
  "path": "/api/v1/motors/aerotech/H128W.json",   // this motor's own endpoint
  "manufacturer": "AeroTech",        // | "Cesaroni Technology" | "Loki Research"
  "designation": "H128W",
  "impulse_class": "H",              // A–O
  "diameter_mm": 29,
  "total_impulse_ns": 176.2,
  "avg_thrust_n": 128,
  "burn_time_s": 1.4,
  "propellant": "White Lightning",
  "sparky": false,
  "motor_type": "reload",            // | "SU" | "hybrid"
  "case_info": "RMS-29/180",         // null for single-use
  "hazmat": "required",              // "required" | "varies" (F/G) | "none"
  "in_stock": true,
  "vendor_count": 5,                 // distinct vendors carrying it
  "in_stock_vendor_count": 3,
  "listing_count": 9,                // total listings (a vendor may list variants)
  "cheapest_in_stock": {             // pack-aware per-unit; null if none in stock
    "unit_price_cents": 3000, "currency": "USD",
    "vendor": "Wildman", "url": "https://…", "pack_size": 2
  },
  "listings": [
    {
      "vendor": "Chris' Rocket Supplies",
      "url": "https://…",            // where to buy it
      "status": "in_stock",          // | "out_of_stock" | "special_order" | "unknown"
      "price_cents": 3499,
      "unit_price_cents": 3499,      // sticker Γ· pack_size
      "pack_size": 1,
      "stock_count": null,           // units on hand, when published
      "last_seen": "2026-06-19T04:00:55Z"
    }
  ]
}

See the full field reference on GitHub for every field.

Examples

# Cheapest in-stock H motors right now
curl -s https://motor.fusionspace.co/api/v1/in-stock.json \
  | jq '.motors[] | select(.impulse_class=="H")
        | {designation, from: .cheapest_in_stock.unit_price_cents,
           vendor: .cheapest_in_stock.vendor}'
// Browser β€” CORS is open
const res = await fetch("https://motor.fusionspace.co/api/v1/in-stock.json");
const { motors } = await res.json();
const cti54 = motors.filter(
  (m) => m.manufacturer === "Cesaroni Technology" && m.diameter_mm === 54,
);

Data licence

The API's responses, and the compilation of motor, listing, stock and price data in them, are licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). Attribute it as: β€œMotor stock data from motor.fusionspace.co”. Caching responses and storing recorded responses (for example as software test fixtures) is permitted under the licence.

Vendor names, prices, stock levels and product links are factual information gathered from the listed retailers, provided as-is, with no warranty of accuracy or availability; trademarks belong to their owners.

Terms

Use of the data is covered by the data licence above. The data is aggregated from public vendor listings and ThrustCurve β€” verify stock and price on the vendor's own page before relying on it.

Please use this API rather than scraping the vendors directlyβ€” that's what it's for, and it keeps load off the shops. Cache a copy and poll meta.json for changes.

There's no per-key or per-IP rate limit. Cloudflare's standard automatic abuse protection applies to all traffic, as it does to any site behind a CDN β€” normal use never encounters it.