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:
- No API key, no rate limits, no cost. Use it as much as you like.
- CORS-open (
Access-Control-Allow-Origin: *) โ call it straight from a browser. - Refreshed about hourly. Check
meta.jsonfor the exactgenerated_at. - It's static JSON โ no query parameters; fetch a file and filter client-side.
Endpoints
Base URL https://motor.fusionspace.co/api/v1/
- GET /api/v1/meta.json โ schema version,
generated_at, counts, manufacturer list. Poll this to detect updates. - GET /api/v1/motors.json โ every matched motor we have a listing for (D-class and up, matching the site).
- GET /api/v1/in-stock.json โ same shape, only motors in stock at a vendor right now.
- GET /api/v1/vendors.json โ the vendors we track, with per-vendor counts.
- GET /api/v1/motors/aerotech/H128W.json โ a single motor โ slugs mirror the site's
/motorURL. - GET /api/v1/openapi.json โ OpenAPI 3.1 spec (drop into Swagger / Postman / codegen).
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
"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,
);Terms
Free to use; attribution to motor.fusionspace.co is appreciated. The data is aggregated from public vendor listings and ThrustCurve; it's provided as-is, with no warrantyโ 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.