Data API — /api/v1
Free plan: query /records and /changelog, 1000 requests/day.
Pro plan ($19/mo, Paddle test mode): everything above + /export CSV download.
Endpoints
| Method | Path | Plan | Notes |
|---|---|---|---|
| GET | /api/v1/records?city=&category=&min_price=&max_price= | free | all filters optional |
| GET | /api/v1/changelog?days=30 | free | diff vs previous snapshot |
| GET | /api/v1/export | pro | CSV download, same filters |
| POST | /api/v1/register | — | {"email": "you@x.com"} → api_key |
| POST | /api/v1/upgrade | — | {"api_key"} → pro (Paddle test) |
Authentication & rate limit
Authorization: Bearer <your-api-key> # 1000 requests per key per UTC day → HTTP 429 when exceeded # missing / bad key → HTTP 401 # /export on a free key → HTTP 402
Example
curl -H "Authorization: Bearer $KEY" \ "https://pseo-sample.pseo-web.workers.dev/api/v1/records?city=austin&category=moving"
Try it
Register a throwaway key below (stored only in your browser):