---
name: contracts-finder-ocds-api-ingestion
description: "How to get UK Contracts Finder OCDS API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load today's Contracts Finder releases into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/contracts-finder-ocds-api
Provider: https://www.contractsfinder.service.gov.uk/apidocumentation/home
Checked against the provider's documentation: 2026-11-02

## Access
- Published-notice OCDS search and harvester CSV endpoints work without an account or key.
- Authentication described in the API help applies to publishing and other protected operations, not the checked public retrieval endpoint.

## Request
```bash
curl -O 'https://www.contractsfinder.service.gov.uk/Harvester/Notices/Data/CSV/Daily'
```

## Format
Flattened OCDS CSV release rows with package metadata and slash-delimited columns for OCID, release ID and date, planning, tender, buyer, supplier, award, value, location, classification and document fields.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""Current-day Contracts Finder OCDS releases -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://www.contractsfinder.service.gov.uk/Harvester/Notices/Data/CSV/Daily"
r = requests.get(URL, timeout=120)
r.raise_for_status()
df = pd.read_csv(io.BytesIO(r.content), low_memory=False)
df.to_parquet("contracts_finder_daily.parquet", index=False)
dates = pd.to_datetime(df["releases/0/date"], utc=True)
print(len(df), "release rows", df["releases/0/ocid"].nunique(), "unique OCIDs",
      dates.min().isoformat(), "to", dates.max().isoformat())
```
Run by us on 2026-11-02 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 143 release rows 143 unique OCIDs 2026-11-02T07:47:51+00:00 to 2026-11-02T20:37:05+00:00

## Limits
- Rate limit: Not stated.
- OCDS search pages return at most 100 releases and use a cursor for later pages.
- The Daily CSV endpoint covers the current date; use the dated CSV path or bounded OCDS search for other dates.

## Quirks
- The CSV is a flattened OCDS representation with slash-delimited column names and many optional blank fields.
- Use OCID to group a contracting process and retain release ID and release date to preserve successive publications or amendments.
- publishedFrom and publishedTo refer to publication date, including the latest edit and first publication in the current stage.

## Terms and attribution
- OCDS packages declare Open Government Licence v3.0.
- Reuse requires source acknowledgement and remains subject to OGL exclusions such as personal data and unlicensed third-party rights.
- Terms page: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/

## Sources
- https://www.contractsfinder.service.gov.uk/apidocumentation/Notices/1/GET-Published-Notice-OCDS-Search: "Searches for published notice OCDS releases package with optional search criteria."
- https://www.contractsfinder.service.gov.uk/apidocumentation/Notices/1/GET-Published-Notice-OCDS-Search: "Default: 100. Values: 1 to 100."
- https://www.contractsfinder.service.gov.uk/apidocumentation/Notices/1/GET-Harvester-Notices-Data-CSV-Daily: "Get the current days OCDS releases in CSV format."
- https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/: "The Licensor grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information subject to the conditions below."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
