---
title: "CSV export"
method: GET
path: "/export"
---

# CSV export

`GET /export`

## Request

- Base URL: `https://firstsited.com/api/v1`
- URL: `https://firstsited.com/api/v1/export`
- Auth: HTTP bearer

The same rows as the feed, as CSV. Every row counts against your site ceiling, so a large export can spend a whole period of that ceiling in a single call. Exports carry a per-key watermark; redistribution is not permitted under the data licence.

With the `contacts` scope the file gains `contact_email`, `contact_url` and `contact_checked_at`, positioned immediately after `url`. The columns are present whenever the key is entitled, even where no row on that page carries an address, so parsing by position is stable. An empty pair with a `contact_checked_at` means the site was examined and publishes nothing; an empty `contact_checked_at` means it has not been examined.

Requires the `export` scope. Available on: indie, pro, firehose.

## Query parameters

- `type` string
- `limit` integer
- `observed_since` string
- `has_email` string
- `has_contact_url` string
- `observed_until` string
- `since` string
- `until` string
- `tech` string
- `keywords` string
- `category` string
- `country` string
- `launch_type` string
- `indie` boolean
- `include` string
- `min_confidence` number
- `min_category_confidence` number
- `min_country_confidence` number

## Response `200`

Success.

## Other responses

- `400`: A required parameter is missing or malformed.
- `401`: No usable key. While the API is unannounced this is masked as 404.
- `403`: The key or plan does not carry the required scope.
- `429`: Quota exhausted (`monthly_credits_exhausted` or `distinct_launch_ceiling_reached`), or the per-key rate limit was exceeded, which returns a plain-text body rather than JSON.

---

[API](https://skmtc.dev/stackscope/apis/firstsited-api.md) · [All operations](https://skmtc.dev/stackscope/apis/firstsited-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stackscope/apis/firstsited-api/revisions/36ae1d406fb1?raw)
