---
title: "Download one dataset file"
method: GET
path: "/v1/bulk/{dataset}/{period}"
tags: ["Bulk data"]
---

# Download one dataset file

`GET /v1/bulk/{dataset}/{period}`

## Request

- Base URL: `https://api.puntersedge.online`
- URL: `https://api.puntersedge.online/v1/bulk/{dataset}/{period}`
- Auth: API key in header `X-API-Key`

Cost: 20 credits for a daily file, 100 for a monthly bundle, charged when the file is
served; a 304 costs nothing. One request returns the whole day or month as one file, with
exactly the rows the paged endpoints would give you: Betfair withheld, split-flagged rows
excluded, the field-disclosure rule applied to results.

`pd.read_parquet(BytesIO(r.content))` reads the Parquet; `format=csv` is a gzip file
(`pd.read_csv(BytesIO(r.content), compression="gzip")`) with the same column order,
which is the order listed in the catalogue.

Daily files are Business and above. Monthly bundles are Platform and above; a Business
key asking for a month gets a 403 that says so and is not charged.

## Path parameters

- `dataset` string, required: Dataset name from /v1/bulk/datasets.
- `period` string, required: YYYY-MM-DD for a Sydney meeting day, YYYY-MM for a calendar month.

## Query parameters

- `format` string: parquet (typed, snappy) or csv (gzip-compressed).

## Headers

- `If-None-Match` string, nullable
- `X-API-Key` string
- `X-RapidAPI-Proxy-Secret` string

## Response `200`

The file. ETag is the sha256; X-Dataset-Rows and X-Dataset-Generated-At describe it.

- unknown

## Other responses

- `304`: If-None-Match matched — unchanged, nothing charged.
- `401`: Missing or invalid API key. Send `X-API-Key`. See https://puntersedge.online/developers/errors
- `402`: Monthly credit allowance exhausted for this plan. Upgrade at https://puntersedge.online/api/pricing
- `403`: Daily files: Business and above. Monthly bundles: Platform and above.
- `404`: No file for that dataset and period (yet).
- `422`: Validation Error
- `429`: Rate limit exceeded for this plan. Honour the `Retry-After` header (seconds) before retrying. See https://puntersedge.online/developers/rate-limits
- `500`: Unexpected server error. Safe to retry with backoff.

---

[API](https://skmtc.dev/puntersedge/apis/puntersedge-odds-api.md) · [All operations](https://skmtc.dev/puntersedge/apis/puntersedge-odds-api/llms.txt) · [OpenAPI document](https://skmtc.dev/puntersedge/apis/puntersedge-odds-api/revisions/f35b6aab1946?raw)
