nuforc.org APInuforc.org ↗
Access UFO sighting reports from the NUFORC database. Browse by month, search by year, and retrieve full witness descriptions, shapes, locations, and images.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/b54cbf1c-e649-4ebc-a83a-358f0ca15102/list_months' \ -H 'X-API-Key: $PARSE_API_KEY'
List all available months in the NUFORC databank. Each month has an ID (e.g., 'e202401') used as input for list_reports and search_reports endpoints. Returns months ordered from newest to oldest.
No input parameters required.
{
"type": "object",
"fields": {
"months": "array of objects with keys: id (string, month identifier like 'e202401'), name (string, display name like '2024/01'), url (string, link to month page)"
},
"sample": {
"data": {
"months": [
{
"id": "e202604",
"url": "https://nuforc.org//subndx/?id=e202604",
"name": "2026/04"
},
{
"id": "e202603",
"url": "https://nuforc.org//subndx/?id=e202603",
"name": "2026/03"
}
]
},
"status": "success"
}
}About the nuforc.org API
The NUFORC API provides structured access to the National UFO Reporting Center database through 4 endpoints, covering report summaries, full witness accounts, and monthly indexes. The get_report endpoint returns 10 discrete fields per sighting including description, shape, duration, location, and attached images. The search_reports endpoint lets you query by year alone or narrow to a specific month without needing a pre-fetched month ID.
Browsing and Searching Reports
The list_months endpoint returns the full index of available months in the NUFORC databank, each with an id field (e.g., e202401), a human-readable name (e.g., 2024/01), and a url. Those month IDs are the primary key passed to list_reports, which returns report summaries for that month — including city, state, occurred, and a short summary text for each sighting.
The search_reports endpoint provides an alternative entry point: supply only a year integer and it returns the available_months array for that year. Add an optional month integer (1–12) and it behaves like list_reports, returning reports and a month_id for the matched period.
Detailed Report Data
The get_report endpoint accepts a numeric report_id from any listing result and returns the full record. Fields include occurred, reported, posted, location, shape, color, duration, description (the full witness narrative), and an images array of URLs when photos are attached. Not all fields are populated on every report — color, images, and explanation may be empty depending on what the witness submitted.
Coverage and Data Shape
Reports span multiple decades of NUFORC submissions. Month identifiers follow the pattern eYYYYMM, so January 2024 is e202401. The list_months response is ordered newest to oldest, which makes it straightforward to paginate backward through historical data. Report IDs are numeric strings; passing one to get_report returns data for that single incident with no pagination required.
- Map UFO sightings by
cityandstatefields to visualize geographic clustering over time - Analyze
shapeanddurationfields across thousands of reports to identify statistical patterns - Build a sighting archive browser that lets users navigate by year and month using
search_reports - Extract and index
descriptiontext fromget_reportfor NLP or keyword analysis on witness language - Filter sightings with attached
imagesto build a photo gallery of documented incidents - Track monthly report volume over time using the
list_monthsindex andlist_reportscounts - Research sighting frequency by state for a given year using the
search_reportsyear+month combination
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does NUFORC provide an official developer API?+
What does `get_report` return versus `list_reports`?+
list_reports returns summary-level fields for all reports in a given month: id, occurred, city, state, and a brief summary. get_report fetches a single report by its numeric ID and returns the full record, including the witness description, shape, color, duration, images, reported, and posted dates. You need a report ID from a listing call to use get_report.Are reports from countries outside the United States included?+
location field on individual reports can reflect international locations. However, the state field on summary records is oriented toward US state codes, so international reports may have an empty or non-standard state value.Can I filter reports by shape, city, or witness-reported color?+
list_reports or search_reports; filtering by fields like shape, city, or color is not available as a query parameter. You can fork this API on Parse and revise it to add a filtered-search endpoint using those fields.Is there a way to retrieve the most recent reports without knowing the current month ID?+
list_months returns months ordered newest to oldest with no required parameters, so the first item in the response is always the most recent available month. Pass its id to list_reports or search_reports to get the latest sightings.