Documentation menu
Getting started
QuickstartEndpoints
GET/sourcesGET/tender/alerts/unsubscribeGET/tender/{record_id}/documents/{doc_index}GET/vendorsGET/departmentsGET/department/{name}GET/vendor/{name}GET/contractGET/tenderGET/awardGET/disclosureGET/standing_offerGET/pre_solicitationGET/contract/statsGET/tender/statsGET/award/statsGET/disclosure/statsGET/standing_offer/statsGET/pre_solicitation/statsGET/contract/coverageGET/tender/coverageGET/award/coverageGET/disclosure/coverageGET/standing_offer/coverageGET/pre_solicitation/coverageGET/procurement/{solicitation_number}GET/tender/feedGET/contract/{record_id}GET/tender/{record_id}GET/award/{record_id}GET/disclosure/{record_id}GET/standing_offer/{record_id}GET/pre_solicitation/{record_id}Docs / Guides / Export results to CSV or a spreadsheet
Export results to CSV or a spreadsheet
Pull records across pages and write them to a CSV you can open in Excel or Sheets.
Pull every matching record from ProcureData and write a CSV you can open in Excel or Google Sheets. This loops pages until the results run out.
import csv, requests
URL = "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/sources"
HEADERS = {"x-rapidapi-host": "procuredata-canadian-government-procurement-api.p.rapidapi.com", "x-rapidapi-key": "YOUR_RAPIDAPI_KEY"}
rows, offset = [], 0
while True:
r = requests.get(URL, headers=HEADERS, params={"limit": 100, "offset": offset}).json()
batch = r.get("results", [])
if not batch:
break
rows += batch
offset += 100
with open("export.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=rows[0].keys())
w.writeheader()
w.writerows(rows)Swap in the filters from the endpoint's reference page to export exactly the slice you want.
Ready to build?Subscribe on RapidAPI to get your key and start calling ProcureData in minutes.
Get your API key →