---
type: "firecrawl-provider"
description: "NASA LANCE FIRMS near-real-time active fire detections (VIIRS on Suomi NPP, NOAA-20 and NOAA-21; MODIS C6.1; Landsat): status of the keyless 24h/48h/7d CSV files per sensor and region, the detections themselves paged by byte range and pinned to one publication, and a bounding-box query (keyed area API, or the regional files when no MAP_KEY is supplied)."
use_when: "NASA LANCE FIRMS near-real-time active fire detections (VIIRS on Suomi NPP, NOAA-20 and NOAA-21; MODIS C6.1; Landsat): status of the keyless 24h/48h/7d CSV files per sensor and region, the detections themselves paged by byte range and pinned to one publication, and a bounding-box query (keyed area API, or the regional files when no MAP_KEY is supplied)."
categories: "Public records"
capabilities: 3
credits_per_call: 5
---
# NASA FIRMS active fire detections on Firecrawl Alexandria

NASA LANCE FIRMS near-real-time active fire detections (VIIRS on Suomi NPP, NOAA-20 and NOAA-21; MODIS C6.1; Landsat): status of the keyless 24h/48h/7d CSV files per sensor and region, the detections themselves paged by byte range and pinned to one publication, and a bounding-box query (keyed area API, or the regional files when no MAP_KEY is supplied).

- Categories: Public records
- Category index: [Public records category](https://firecrawl.dev/alexandria/agents/categories/public-records)
- Provider key: `firms-modaps-eosdis-nasa-gov`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/firms-modaps-eosdis-nasa-gov)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/openapi.json)

## Capabilities

- [Fires area](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/fires_area): Detections inside a bounding box (or `world`) for a source product over the last 1 to 5 days. With `map_key` (the free FIRMS MAP_KEY, downstream env FIRMS_MAP_KEY) the keyed area API is called exactly as documented, optional `date` included, and the response rows are returned. Without a key the request is served from the keyless active-fire file of the smallest published region that contains the box (Global otherwise) for the matching window (1 day: 24h, 2: 48h, 3 to 5: 7d), filtered client-side by the box and by acq_date; `_SP` sources and dates outside the files' 7-day window need the key.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/records_list): The detections of one keyless active-fire CSV file (segment = sensor x window x region), paged by byte range and pinned to one publication. Each page fetches one `Range` of the file, trims to whole lines and returns up to `limit` rows; the cursor carries the file's ETag and SHA-256 plus the next byte offset, and a page whose ETag no longer matches fails with invalid_input issue code `publication_changed` instead of mixing versions. When one page covers the whole file its SHA-256 is verified against x-amz-meta-sha256.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/source_status): Cheap version check of the keyless active-fire CSV files: for each sensor x window in the chosen region (or one file when both are given) a HEAD request returns the file URL, size, Last-Modified, the publisher's MD5 (ETag) and SHA-256 and the publication id `<file name>@<sha256>`. No record count: it would need the whole file.

## 1. Choose this provider when

NASA LANCE FIRMS near-real-time active fire detections (VIIRS on Suomi NPP, NOAA-20 and NOAA-21; MODIS C6.1; Landsat): status of the keyless 24h/48h/7d CSV files per sensor and region, the detections themselves paged by byte range and pinned to one publication, and a bounding-box query (keyed area API, or the regional files when no MAP_KEY is supplied).

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "firms-modaps-eosdis-nasa-gov",
  "capability": "wildfire-detections/fires_area",
  "options": {
    "area": "46.0,29.0,50.0,32.0",
    "day_range": 1,
    "limit": 2,
    "source": "VIIRS_NOAA20_NRT"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `area` (string, required): `world` or `west,south,east,north` in decimal degrees (longitude -180..180, latitude -90..90, west < east, south < north). Pattern: ^(world|-?\d{1,3}(\.\d+)?,-?\d{1,2}(\.\d+)?,-?\d{1,3}(\.\d+)?,-?\d{1,2}(\.\d+)?)$. Example: `<area>`
- `date` (string): Last day of the range, UTC. Keyed mode passes it to the API; keyless mode only accepts dates covered by the 7-day files. Pattern: ^\d{4}-\d{2}-\d{2}$. Example: `<date>`
- `day_range` (number): Days of data ending at `date` (or now). Each day counts as one transaction against the key's 5000 per 10 minutes. Example: `1`
- `limit` (number): Maximum records returned; `truncated` says when more matched. Example: `5000`
- `map_key` (string): FIRMS MAP_KEY (32 lowercase hex characters, free by email at /api/map_key/). Omit to use the keyless files. Pattern: ^[0-9a-f]{32}$. Example: `<map_key>`
- `source` (string, required): FIRMS source product name as used by /api/area. Keyless mode maps the NRT products to the file families; the `_SP` archives need `map_key`. Example: `VIIRS_SNPP_NRT`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "firms-modaps-eosdis-nasa-gov",
    capability: "wildfire-detections/fires_area",
    options: {
      area: "46.0,29.0,50.0,32.0",
      day_range: 1,
      limit: 2,
      source: "VIIRS_NOAA20_NRT",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "firms-modaps-eosdis-nasa-gov",
  "capability": "wildfire-detections/fires_area",
  "options": {
    "area": "46.0,29.0,50.0,32.0",
    "day_range": 1,
    "limit": 2,
    "source": "VIIRS_NOAA20_NRT"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "firms-modaps-eosdis-nasa-gov",
    "capability": "wildfire-detections/fires_area",
    "options": {
      "area": "46.0,29.0,50.0,32.0",
      "day_range": 1,
      "limit": 2,
      "source": "VIIRS_NOAA20_NRT"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'firms-modaps-eosdis-nasa-gov/wildfire-detections/fires_area' \
  --options '{"area":"46.0,29.0,50.0,32.0","day_range":1,"limit":2,"source":"VIIRS_NOAA20_NRT"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "firms-modaps-eosdis-nasa-gov",
  "capability": "wildfire-detections/fires_area",
  "options": {
    "area": "46.0,29.0,50.0,32.0",
    "day_range": 1,
    "limit": 2,
    "source": "VIIRS_NOAA20_NRT"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "firms-modaps-eosdis-nasa-gov",
  "capability": "wildfire-detections/fires_area",
  "options": {
    "area": "46.0,29.0,50.0,32.0",
    "day_range": 1,
    "limit": 2,
    "source": "VIIRS_NOAA20_NRT"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "area": "46.0,29.0,50.0,32.0",
  "bbox": {
    "east": 50,
    "north": 32,
    "south": 29,
    "west": 46
  },
  "count": 2,
  "date": null,
  "day_range": 1,
  "matched": 89,
  "mode": "active_fire_file",
  "observed_at_ms": 1792355899832,
  "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
  "published_at": "2026-10-18T19:41:42Z",
  "records": [
    {
      "acq_date": "2026-10-18",
      "acq_time": "1015",
      "acquired_at": "2026-10-18T10:15:00Z",
      "bright_t31": null,
      "bright_ti4": 340.84,
      "bright_ti5": 313.03,
      "brightness": null,
      "confidence": "low",
      "daynight": "D",
      "extra": {},
      "frp": 37.55,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 29.00811,
      "longitude": 47.74698,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:19Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.47,
      "source_record_id": "N20:2026-10-18T1015:29.00811,47.74698",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.4,
      "version": "2.0NRT"
    },
    {
      "acq_date": "2026-10-18",
      "acq_time": "1015",
      "acquired_at": "2026-10-18T10:15:00Z",
      "bright_t31": null,
      "bright_ti4": 339.02,
      "bright_ti5": 300.11,
      "brightness": null,
      "confidence": "nominal",
      "daynight": "D",
      "extra": {},
      "frp": 6.13,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 29.9444,
      "longitude": 49.68876,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:19Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.4,
      "source_record_id": "N20:2026-10-18T1015:29.9444,49.68876",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.44,
      "version": "2.0NRT"
    }
  ],
  "retrieved_at": "2026-10-18T20:38:19Z",
  "source": "VIIRS_NOAA20_NRT",
  "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
  "truncated": true
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Fires area

- Capability: `wildfire-detections/fires_area`
- Description: Detections inside a bounding box (or `world`) for a source product over the last 1 to 5 days. With `map_key` (the free FIRMS MAP_KEY, downstream env FIRMS_MAP_KEY) the keyed area API is called exactly as documented, optional `date` included, and the response rows are returned. Without a key the request is served from the keyless active-fire file of the smallest published region that contains the box (Global otherwise) for the matching window (1 day: 24h, 2: 48h, 3 to 5: 7d), filtered client-side by the box and by acq_date; `_SP` sources and dates outside the files' 7-day window need the key.
- Instructions: Current hotspots around one place (an air base, a city, a park) rather than a whole file.
- Cost: 5 credits per call
- Capability file: [Fires area](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/fires_area)

Accepted options:
- `area` (string, required): `world` or `west,south,east,north` in decimal degrees (longitude -180..180, latitude -90..90, west < east, south < north). Pattern: ^(world|-?\d{1,3}(\.\d+)?,-?\d{1,2}(\.\d+)?,-?\d{1,3}(\.\d+)?,-?\d{1,2}(\.\d+)?)$. Example: `<area>`
- `date` (string): Last day of the range, UTC. Keyed mode passes it to the API; keyless mode only accepts dates covered by the 7-day files. Pattern: ^\d{4}-\d{2}-\d{2}$. Example: `<date>`
- `day_range` (number): Days of data ending at `date` (or now). Each day counts as one transaction against the key's 5000 per 10 minutes. Example: `1`
- `limit` (number): Maximum records returned; `truncated` says when more matched. Example: `5000`
- `map_key` (string): FIRMS MAP_KEY (32 lowercase hex characters, free by email at /api/map_key/). Omit to use the keyless files. Pattern: ^[0-9a-f]{32}$. Example: `<map_key>`
- `source` (string, required): FIRMS source product name as used by /api/area. Keyless mode maps the NRT products to the file families; the `_SP` archives need `map_key`. Example: `VIIRS_SNPP_NRT`

Response schema example:
```json
{
  "area": "46.0,29.0,50.0,32.0",
  "bbox": {
    "east": 50,
    "north": 32,
    "south": 29,
    "west": 46
  },
  "count": 2,
  "date": null,
  "day_range": 1,
  "matched": 89,
  "mode": "active_fire_file",
  "observed_at_ms": 1792355899832,
  "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
  "published_at": "2026-10-18T19:41:42Z",
  "records": [
    {
      "acq_date": "2026-10-18",
      "acq_time": "1015",
      "acquired_at": "2026-10-18T10:15:00Z",
      "bright_t31": null,
      "bright_ti4": 340.84,
      "bright_ti5": 313.03,
      "brightness": null,
      "confidence": "low",
      "daynight": "D",
      "extra": {},
      "frp": 37.55,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 29.00811,
      "longitude": 47.74698,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:19Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.47,
      "source_record_id": "N20:2026-10-18T1015:29.00811,47.74698",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.4,
      "version": "2.0NRT"
    },
    {
      "acq_date": "2026-10-18",
      "acq_time": "1015",
      "acquired_at": "2026-10-18T10:15:00Z",
      "bright_t31": null,
      "bright_ti4": 339.02,
      "bright_ti5": 300.11,
      "brightness": null,
      "confidence": "nominal",
      "daynight": "D",
      "extra": {},
      "frp": 6.13,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 29.9444,
      "longitude": 49.68876,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:19Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.4,
      "source_record_id": "N20:2026-10-18T1015:29.9444,49.68876",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.44,
      "version": "2.0NRT"
    }
  ],
  "retrieved_at": "2026-10-18T20:38:19Z",
  "source": "VIIRS_NOAA20_NRT",
  "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
  "truncated": true
}
```

### Records list

- Capability: `wildfire-detections/records_list`
- Description: The detections of one keyless active-fire CSV file (segment = sensor x window x region), paged by byte range and pinned to one publication. Each page fetches one `Range` of the file, trims to whole lines and returns up to `limit` rows; the cursor carries the file's ETag and SHA-256 plus the next byte offset, and a page whose ETag no longer matches fails with invalid_input issue code `publication_changed` instead of mixing versions. When one page covers the whole file its SHA-256 is verified against x-amz-meta-sha256.
- Instructions: Collect every current detection of a sensor for a window and region; walk regions instead of Global to keep 7d files small.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/records_list)

Accepted options:
- `cursor` (string): `next_cursor` from the previous page. Omit for the first page; a cursor from another file or sensor is rejected. Example: `next_cursor`
- `limit` (number): Maximum rows per page. Rows left in the fetched byte range are re-read on the next page. Example: `1000`
- `page_bytes` (number): Bytes fetched per page (one Range request). Default 4 MiB. Example: `4194304`
- `region` (string): Default Global. landsat only publishes Canada and USA_contiguous_and_Hawaii. Example: `Global`
- `sensor` (string, required): sensor Example: `suomi-npp-viirs-c2`
- `summary_only` (boolean): Count the rows of the page without returning them (records is empty). Example: `false`
- `window` (string, required): window Example: `24h`

Response schema example:
```json
{
  "columns": [
    "latitude",
    "longitude",
    "bright_ti4",
    "scan",
    "track",
    "acq_date",
    "acq_time",
    "satellite",
    "confidence",
    "version",
    "bright_ti5",
    "frp",
    "daynight"
  ],
  "count": 2,
  "next_cursor": "firms1|278|\"ae56fd582cbda6d55060cd66b6febad4\"|91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66|latitude,longitude,bright_ti4,scan,track,acq_date,acq_time,satellite,confidence,version,bright_ti5,frp,daynight",
  "observed_at_ms": 1792355893688,
  "page": {
    "byte_end": 278,
    "byte_start": 0,
    "fetched_bytes": 65536,
    "rows": 2,
    "sha256_verified": null
  },
  "publication": {
    "etag": "\"ae56fd582cbda6d55060cd66b6febad4\"",
    "file_name": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
    "file_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
    "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
    "published_at": "2026-10-18T19:41:42Z",
    "sha256": "91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
    "size_bytes": 1013098
  },
  "records": [
    {
      "acq_date": "2026-10-17",
      "acq_time": "0058",
      "acquired_at": "2026-10-17T00:58:00Z",
      "bright_t31": null,
      "bright_ti4": 297.9,
      "bright_ti5": 287.55,
      "brightness": null,
      "confidence": "nominal",
      "daynight": "N",
      "extra": {},
      "frp": 0.95,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 37.44126,
      "longitude": 15.03051,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:13Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.38,
      "source_record_id": "N20:2026-10-17T0058:37.44126,15.03051",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.36,
      "version": "2.0NRT"
    },
    {
      "acq_date": "2026-10-17",
      "acq_time": "0058",
      "acquired_at": "2026-10-17T00:58:00Z",
      "bright_t31": null,
      "bright_ti4": 330.86,
      "bright_ti5": 288.95,
      "brightness": null,
      "confidence": "nominal",
      "daynight": "N",
      "extra": {},
      "frp": 5.4,
      "hazard_type": "wildfire",
      "instrument": "VIIRS",
      "latitude": 37.43798,
      "longitude": 15.02971,
      "path": null,
      "publication_id": "J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv@91e82a45fccfb3ce29704c046d3a7bae9a307369154d6f8a18d78d70fc3b6a66",
      "retrieved_at": "2026-10-18T20:38:13Z",
      "row": null,
      "satellite": "N20",
      "scan": 0.38,
      "source_record_id": "N20:2026-10-17T0058:37.43798,15.02971",
      "source_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Northern_and_Central_Africa_24h.csv",
      "track": 0.36,
      "version": "2.0NRT"
    }
  ],
  "region": "Northern_and_Central_Africa",
  "retrieved_at": "2026-10-18T20:38:13Z",
  "sensor": "noaa-20-viirs-c2",
  "window": "24h"
}
```

### Source status

- Capability: `wildfire-detections/source_status`
- Description: Cheap version check of the keyless active-fire CSV files: for each sensor x window in the chosen region (or one file when both are given) a HEAD request returns the file URL, size, Last-Modified, the publisher's MD5 (ETag) and SHA-256 and the publication id `<file name>@<sha256>`. No record count: it would need the whole file.
- Instructions: Before paging a file with records_list, or on a schedule, to see whether a file was republished (sha256 changed) without downloading it.
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/firms-modaps-eosdis-nasa-gov/wildfire-detections/source_status)

Accepted options:
- `region` (string): File region stem (from /api/coordinates/all). Default Global. Example: `Global`
- `sensor` (string): File family (path segment under /data/active_fire/). Omitted: every sensor that publishes the region (landsat only publishes Canada and USA_contiguous_and_Hawaii). Example: `suomi-npp-viirs-c2`
- `window` (string): Rolling window of the file. Omitted: all three. Example: `24h`

Response schema example:
```json
{
  "count": 1,
  "files": [
    {
      "etag": "\"02d78625d9d9deeb0e35c33d82942666\"",
      "file_name": "J1_VIIRS_C2_Global_24h.csv",
      "file_url": "https://firms.modaps.eosdis.nasa.gov/data/active_fire/noaa-20-viirs-c2/csv/J1_VIIRS_C2_Global_24h.csv",
      "md5": "02d78625d9d9deeb0e35c33d82942666",
      "publication_id": "J1_VIIRS_C2_Global_24h.csv@728919d8884eb129682dd8a114935fa6746039e7021204214d7475b9f408d295",
      "published_at": "2026-10-18T19:40:25Z",
      "region": "Global",
      "sensor": "noaa-20-viirs-c2",
      "sha256": "728919d8884eb129682dd8a114935fa6746039e7021204214d7475b9f408d295",
      "size_bytes": 8158717,
      "window": "24h"
    }
  ],
  "observed_at_ms": 1792355885335,
  "region": "Global",
  "retrieved_at": "2026-10-18T20:38:05Z",
  "source": "NASA FIRMS"
}
```
