# Records, free

> Records of one week or a recent range, as the pages show them.

Source: https://firmtape.com/docs/developers/geo/free-items

Records of one week or a recent range, as the pages show them.

`GET https://firmtape.com/geo/api/items`

Plan Free · No key · Limit Free JSON, the last 30 days · Version 1.0.0

**This endpoint serves:** [GEO: The map and the feed](https://firmtape.com/docs/geo#records-map), [GEO: The API, webhooks and MCP](https://firmtape.com/docs/geo#geo-api). **Plan:** [Free](https://firmtape.com/features/replay). Free, no account

## Parameters

| Name | What it does | Default | Error |
| --- | --- | --- | --- |
| `week` query, string | ISO week on the New York calendar, e.g. 2026-W38; replaces range |  |  |
| `range` query, 24h \| 7d \| 30d | 24h, 7d or 30d when no week is given | 24h |  |
| `sector` query, gov \| air \| gps \| sea \| internet \| ground \| space \| attention | Sector |  |  |
| `country` query, string | ISO 3166-1 alpha-2 |  |  |
| `notable` query, 1 | 1 keeps only notable records |  |  |
| `limit` query, integer | Up to 1000 | 200 |  |
| `offset` query, integer | Paging inside a week |  |  |

## Response

Records, newest first, with week paging links

| Field | Meaning | Unit |
| --- | --- | --- |
| `items` (array) |  |  |
| `items[].uid` (string) | Stable id of the record |  |
| `items[].feed` (string) | Feed id, see /v1/sources or https://firmtape.com/geo/sources |  |
| `items[].sector` (gov \| air \| gps \| sea \| internet \| ground \| space \| attention) |  |  |
| `items[].type` (string) | new, update, level_raise, level_lower, cancel, spike, keyword or no_data |  |
| `items[].category` (string) |  |  |
| `items[].severity` (integer) | 0 info, 1 routine, 2 notable, 3 critical |  |
| `items[].routine` (boolean) | True for the records the pages hide by default |  |
| `items[].countries` (array) | ISO 3166-1 alpha-2 |  |
| `items[].region` (string \| null) |  |  |
| `items[].title` (string) |  |  |
| `items[].summary` (string) |  |  |
| `items[].published_utc` (string) | When the source published it |  |
| `items[].event_utc` (string \| null) | When the activity happens or starts, when the record says |  |
| `items[].first_seen_utc` (string) | When FirmTape first read it |  |
| `items[].backfill` (boolean) | Found in the source's own history rather than caught live |  |
| `items[].source` (string) | The publisher to credit |  |
| `items[].url` (string) | The record at its source |  |
| `items[].attribution` (string \| null) | Paid API only: the citation the source asks for |  |
| `items[].value` (number \| null) | Spikes: what was measured |  |
| `items[].baseline` (number \| null) | Spikes: its own normal |  |
| `items[].score` (number \| null) | Spikes: value against the normal |  |
| `items[].lat` (number \| null) | Paid API only |  |
| `items[].lon` (number \| null) | Paid API only |  |
| `items[].facts` (object) | Paid API only: source-specific details |  |
| `next_page` (string \| null) |  |  |
| `prev_week` (string \| null) |  |  |
| `next_week` (string \| null) |  |  |

## Request

```sh
curl \
  "https://firmtape.com/geo/api/items"
```

```python
import os, requests

H = {}
r = requests.get("https://firmtape.com/geo/api/items", headers=H)
print(r.status_code, r.text[:500])
```

```js
const r = await fetch("https://firmtape.com/geo/api/items", {
  method: "GET",
  headers: {  },
});
console.log(r.status, await r.text());
```
