fsaircraft.net

JSON API

Everything this site shows is available as JSON: 5,655 MSFS add-ons, 8,643 store offers across 7 storefronts, with the price history behind every discount. No key, no rate limit, CORS open to every origin.

Last price check across all stores: 2026-09-22T13:20:30.485Z (UTC). Responses are cached for 10 minutes and carry generated_at.

Shape of a response

Every response is an object carrying generated_at (RFC 3339, UTC),source, license and contact, followed by the payload. Money always looks like this — the currency the store charges in, plus a conversion into all three display currencies so you never need an FX table of your own:

"price": {
  "amount": 59.99,
  "currency": "GBP",
  "converted": { "EUR": 69.14, "USD": 74.82, "GBP": 59.99 }
}

Quote amount/currency when stating a price; converted is for comparison only. Offers carry both go_url (our counted redirect) andstore_url (the store's own page).

Catalog

GET /api/v1/products.json

Paginated list of add-ons. The same query engine as /addons, so a filter here and the equivalent page on the site can never disagree.

q
Full-text search over title, summary, developer and tags. Minimum three characters.
category
Category slug: aircraft, airport, livery, other, scenery, utility.
sim
msfs2020, msfs2024, or unknown for add-ons with no declared version.
store
Store slug: aerosoft, contrail, justflight, orbx, pmdg, simmarket, inibuilds.
developer
Developer slug, as shown on /developers.
aircraft_type
ICAO Doc 8643 designator — B738, A20N, C172. Vocabulary: /api/v1/aircraft-types.json.
airport
ICAO airport code — EGLL, KJFK. Vocabulary: /api/v1/airports.json.
on_sale
Set to 1 for discounted add-ons only.
sort
relevance, price_asc, price_desc, discount, newest, ending_soon, saving.
page / per_page
1-based page number; up to 100 rows per page (default 50).

One add-on

GET /api/v1/products/{slug}.json

Everything we hold on a single product: every store offer with its VAT split, sale expiry and last-checked time, plus the daily price history the chart on the site is drawn from.

{slug}
The slug from the add-on page URL, /addons/{slug}.

Deals

GET /api/v1/deals.json

Current discounts, in the same three cuts the site publishes as pages, plus catalog-wide counters under totals.

type
all (default), ending-soon, or lowest-ever.
category / sim / store
Same slugs as the catalog endpoint.
page / per_page
As above.

Aircraft types

GET /api/v1/aircraft-types.json

The vocabulary behind aircraft_type: every ICAO Doc 8643 designator with its manufacturer, model, family, category, first flight and a freely-licensed photo where we have one, plus how many add-ons we carry for it. Aircraft facts come from Doc 8643 and Wikidata; the counts are ours.

all
Set to 1 to include sim-relevant types that have no add-on yet.
manufacturer
Manufacturer slug, as used in /aircraft/{manufacturer}.
category
airliner, regional, business-jet, general-aviation, turboprop, military, helicopter, glider, historic, other.

Airports

GET /api/v1/airports.json

The vocabulary behind airport: every ICAO airport at least one tracked add-on implements, with name, city, country, continent, size and coordinates from OurAirports, plus the add-on count. Airports nobody has built scenery for are not listed.

country
ISO 3166-1 alpha-2 (GB) or the slug used in site URLs (united-kingdom).
continent
AF, AN, AS, EU, NA, OC or SA.

Stores

GET /api/v1/stores.json

Every storefront we read, with how many products it carries, how many are discounted, and what our price history says about how deep its discounts usually run.

Questions people ask

Do I need an API key?
No. There is no authentication and no rate limit today. Responses are cached for 10 minutes and CORS is open to every origin, so you can call these endpoints straight from a browser.
What does "discount" mean in the API?
The current price is below the highest price we have ever recorded for that same offer at that same store. It is never derived from a store-printed list price, which is why a permanent "50% off" markdown does not appear as a deal.
Which currency are prices in?
Both: every money object carries the amount and currency the store actually charges, plus a converted block with EUR, USD and GBP at the latest ECB reference rate. Use the store currency when quoting a price and the converted values only for comparison.
Can I republish this data?
Facts — titles, prices, discounts, store and developer names, declared compatibility — can be reused and cited freely with attribution to fsaircraft.net and a link to the page the fact came from. Product images and store-written descriptions belong to their vendors and are not ours to license.

Fair use

There is no rate limit because nobody has needed one. If you are planning a full crawl, take the catalog endpoint at per_page=100 rather than fetching every product detail — and if you are building something on this data, we would like to hear about it: [email protected].