Spaceflight News API is a free, keyless aggregator of space and astronomy news, articles, blogs, and reports pulled from NASA, ESA, and dozens of other spaceflight outlets, currently indexing more than 35,000 articles. The v4 API is fully open — no signup or API key needed — and returns paginated JSON with count/next/previous fields, plus a public OpenAPI/Swagger reference at its /v4/docs endpoint.
Spaceflight News API is a free, community-run aggregator that indexes space and astronomy articles from dozens of outlets, including SpaceNews and Space Scout, into one paginated JSON feed. A live GET this run against /articles/?limit=2 returned genuine, current article data with no registration, key, or authentication of any kind.
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.
GreatAPIs Score
Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months
Embed this badge
<a href="https://greatapis.com/api/spaceflight-news/"><img src="https://greatapis.com/badge/spaceflight-news.svg" alt="Scored 94 on greatapis.com"></a>
Auth quickstart
No API key, signup, or credit card required. A live GET this run against /articles/?limit=2 returned real article JSON with access-control-allow-origin: * on the response, confirming both keyless auth and open CORS with nothing to configure first.
Stored keyNo key stored
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
articles2
GET/v4/articles/
Parameters
Name
In
Required
Type
event
query
no
array
has_event
query
no
boolean
has_launch
query
no
boolean
is_featured
query
no
boolean
launch
query
no
array
limit
query
no
integer
news_site
query
no
string
news_site_exclude
query
no
string
offset
query
no
integer
ordering
query
no
array
published_at_gt
query
no
string
published_at_gte
query
no
string
published_at_lt
query
no
string
published_at_lte
query
no
string
search
query
no
string
summary_contains
query
no
string
summary_contains_all
query
no
string
summary_contains_one
query
no
string
title_contains
query
no
string
title_contains_all
query
no
string
title_contains_one
query
no
string
updated_at_gt
query
no
string
updated_at_gte
query
no
string
updated_at_lt
query
no
string
updated_at_lte
query
no
string
Responses
Status
Description
Schema
200
PaginatedArticleList
GET/v4/articles/{id}/
Parameters
Name
In
Required
Type
id
path
yes
integer
Responses
Status
Description
Schema
200
Article
blogs2
GET/v4/blogs/
Parameters
Name
In
Required
Type
event
query
no
array
has_event
query
no
boolean
has_launch
query
no
boolean
is_featured
query
no
boolean
launch
query
no
array
limit
query
no
integer
news_site
query
no
string
news_site_exclude
query
no
string
offset
query
no
integer
ordering
query
no
array
published_at_gt
query
no
string
published_at_gte
query
no
string
published_at_lt
query
no
string
published_at_lte
query
no
string
search
query
no
string
summary_contains
query
no
string
summary_contains_all
query
no
string
summary_contains_one
query
no
string
title_contains
query
no
string
title_contains_all
query
no
string
title_contains_one
query
no
string
updated_at_gt
query
no
string
updated_at_gte
query
no
string
updated_at_lt
query
no
string
updated_at_lte
query
no
string
Responses
Status
Description
Schema
200
PaginatedBlogList
GET/v4/blogs/{id}/
Parameters
Name
In
Required
Type
id
path
yes
integer
Responses
Status
Description
Schema
200
Blog
info1
GET/v4/info/
Responses
Status
Description
Schema
200
Info
reports2
GET/v4/reports/
Parameters
Name
In
Required
Type
limit
query
no
integer
news_site
query
no
string
news_site_exclude
query
no
string
offset
query
no
integer
ordering
query
no
array
published_at_gt
query
no
string
published_at_gte
query
no
string
published_at_lt
query
no
string
published_at_lte
query
no
string
search
query
no
string
summary_contains
query
no
string
summary_contains_all
query
no
string
summary_contains_one
query
no
string
title_contains
query
no
string
title_contains_all
query
no
string
title_contains_one
query
no
string
updated_at_gt
query
no
string
updated_at_gte
query
no
string
updated_at_lt
query
no
string
updated_at_lte
query
no
string
Responses
Status
Description
Schema
200
PaginatedReportList
GET/v4/reports/{id}/
Parameters
Name
In
Required
Type
id
path
yes
integer
Responses
Status
Description
Schema
200
Report
Try it
Developer reference
Base URLhttps://api.spaceflightnewsapi.net
Key endpoints
GET/v4/articles/
GET/v4/articles/{id}/
GET/v4/blogs/
GET/v4/info/
Gotchas & limits
A nonexistent article id is a real HTTP 404, not a 200 with an empty body — a live GET this run against /articles/999999999/ returned HTTP 404 with JSON body {"detail":"No Article matches the given query."}.
CORS reflects any origin — a live GET this run with Origin: https://example.com against /articles/?limit=2 still returned access-control-allow-origin: *, so this API can be called directly from client-side JavaScript on any domain.
summary is prose scraped from the source outlet and sometimes carries the outlet's own boilerplate (a trailing "The post ... appeared first on ..." line was present in this run's live capture) — do not assume it is a clean editorial abstract.
There is no /articles/{id}.json shorthand like some read-only news APIs use — the id is a query-string-free path segment, /articles/{id}/, with the trailing slash required by the underlying Django REST Framework router.
A public OpenAPI/Swagger reference is served at /v4/docs/ for the full endpoint set (articles, blogs, reports, info) — this quickstart only exercises /articles/; the other two content types share the same shape and pagination style.
Availability
Uptime100%
Median latency152 ms
Last checkUp · 200 · Sep 2026
5 checks since Sep 2026. A person runs this check by hand, not an automated monitor.