Government Tenders Scraper (UK, EU TED, US, Canada, Australia) avatar

Government Tenders Scraper (UK, EU TED, US, Canada, Australia)

Pricing

from $1.65 / 1,000 tenders

Go to Apify Store
Government Tenders Scraper (UK, EU TED, US, Canada, Australia)

Government Tenders Scraper (UK, EU TED, US, Canada, Australia)

Scrape government tenders and contract awards from UK Find a Tender, Contracts Finder, EU TED and CanadaBuys, plus SAM.gov, USAspending and AusTender: buyer, CPV or NAICS code, value, deadline, winning supplier and link. Only new notices since your last run. No login. $3 per 1,000 tenders.

Pricing

from $1.65 / 1,000 tenders

Rating

0.0

(0)

Developer

locaihost data

locaihost data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

Get government tenders and contract awards from UK Find a Tender, UK Contracts Finder, EU TED and CanadaBuys, plus optional US (SAM.gov, USAspending) and Australian (AusTender) sources, in one clean schema with one row per notice. Official open-data APIs and files only: no login, and no API key except for the optional keyed SAM.gov source.

  • Bid teams: a daily list of new tenders in your sector in Slack, email, a Google Sheet or your CRM, without checking four portals.
  • Competitor research: see who wins which public contracts, from which buyers, and for how much (award notices carry supplier and value).
  • Bid-intelligence tools: feed one normalised, multi-country tender feed into alerts, dashboards or AI agents.
  • Market sizing: pull 90 days of notices for a CPV, UNSPSC or NAICS code and count buyers, values and countries.
  • Account planning: track what a specific council, NHS trust or federal agency is buying.

Quick start

Paste this into the JSON tab of the input and click Start:

{"sources": ["eu-ted", "ca-canadabuys", "uk-contracts-finder"], "keywords": ["software"], "daysBack": 3, "statuses": ["open"], "maxResults": 10}

You get 10 open software tenders from the last 3 days that you can still bid on, usually in about 10 seconds. Raise maxResults (default 1,000, 0 = no limit) and leave sources empty for the four default portals.

More options, all off by default:

{
"sources": ["uk-find-a-tender", "uk-contracts-finder", "eu-ted", "us-sam-public", "au-austender"],
"keywords": ["software", "cloud"],
"cpvCodes": ["72", "48"],
"naicsCodes": ["5415"],
"statuses": ["open"],
"countries": ["GB", "IE", "US", "AU"],
"buyerContains": ["NHS", "Defense"],
"minValue": 50000,
"maxValue": 2000000,
"valueCurrency": "USD",
"closingWithinDays": 30,
"daysBack": 7,
"onlyNew": true
}
  • Sources: an empty list means the four defaults (UK Find a Tender, UK Contracts Finder, EU TED, CanadaBuys). au-austender, us-usaspending, us-sam-public and us-sam are opt-in. us-sam-public needs no key; us-sam needs your own free SAM.gov API key in samApiKey. Tick both SAM.gov sources and each notice is returned and charged once.
  • Codes: UK and EU use CPV (72 IT services, 48 software, 45 construction, 79 business services, 85 health). CanadaBuys and AusTender use UNSPSC, and the US sources NAICS and PSC. A plain number matches the first code of any system, so 72 also matches NAICS 72 (accommodation); prefix it to restrict it: NAICS:5415, PSC:D, CPV:72, UNSPSC:43. naicsCodes and cpvCodes combine as OR.
  • Value range: minValue and maxValue are in the notice's own currency unless valueCurrency is USD or GBP. A notice with no stated value never passes a value limit, and many open notices publish none.
  • Closing within: closingWithinDays: 14 keeps notices whose deadline is today or in the next 14 days; notices without a deadline (most awards) are left out while it's set.
  • Keywords match as plain text inside the title, description and category label. Use whole words like software, not IT, which also matches "submit".

What data can I get?

Five real open tenders from UK Find a Tender in this Actor's output: title, buyer, CPV category, closing date and value

GroupFields
Noticesource, title, description, status (open, awarded, planned, closed, cancelled), referenceNo, ocid (UK sources: groups every notice of one procurement), url
Buyeragency, country (ISO 3166-1 alpha-2, also for TED)
Classificationcategory: code and label, such as CPV 72000000 IT services…, UNSPSC 43211500, or NAICS 541519 … · PSC DA10 …
DatespublishedAt, closingAt (bid deadline), awardedAt, daysToDeadline (0 = closes today, negative = already closed)
Valuevalue, currency (estimated value for open tenders, awarded amount for awards), valueUsd, valueGbp (converted at bundled monthly ECB rates)
Awardsupplier: winning organisations, ;-separated
Licencelicence: the publisher's attribution text. Keep it with the data if you republish it

One real row (EU TED, from a run on 2026-10-15):

{
"source": "eu-ted",
"country": "CZ",
"referenceNo": "707562-2026",
"ocid": null,
"title": "Dodávka funkčního celku evidence vodohospodářské infrastruktury včetně zajištění rozvoje a provozu",
"description": null,
"agency": "Ministerstvo zemědělství",
"category": "CPV 72000000 IT services: consulting, software development, Internet and support",
"status": "open",
"publishedAt": "2026-10-14",
"closingAt": "2026-11-02",
"awardedAt": null,
"value": 81618000,
"currency": "CZK",
"supplier": null,
"url": "https://ted.europa.eu/en/notice/-/detail/707562-2026",
"licence": "Source: TED (Tenders Electronic Daily), © European Union. Reuse authorised under Commission Decision 2011/833/EU.",
"scrapedAt": "2026-10-15T16:55:38.103Z",
"daysToDeadline": 18,
"valueUsd": 3867587.11,
"valueGbp": 2882661.12
}

Titles and descriptions are plain text (HTML removed; TED's "Country – Category – " prefix moved into category). UK values exclude VAT where the buyer stated it. Placeholder amounts of 0 or 1 come back as null.

The dataset has a Tenders view and a Closing soon view (deadline and days left first), and exports to JSON, CSV, Excel or HTML. Each run also saves SUMMARY (per-source counts, returned notices by source and by closing window, the exchange-rate month, any source error) and CLOSING_SOON (the notices still open for bids, soonest deadline first, up to 5,000). The run's status message gives the same counts in one line.

How much does it cost?

You pay per tender returned. There is no charge for Apify platform usage on top.

RowFree and StarterScaleBusiness
Tender or award notice$3.00 per 1,000$2.25 per 1,000$1.65 per 1,000

Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 1,600 tenders. Free-plan runs stop at 100 tenders each; any paid Apify plan removes the cap. maxResults (default 1,000) sets your own ceiling.

What's free: notices removed by your filters, notices already returned with onlyNew on, repeat notices of a UK award you already got, and runs that return nothing. Bad input (an unknown source, a missing or rejected SAM.gov key) ends with a message and no tenders. If every picked portal is down, the run ends with a message and no charges. If your Maximum cost per run stops a run, the notices it didn't deliver are not marked as seen, so the next run returns them.

Limits, stated up front

  • Each source reads at most 60,000 raw notices per run, and daysBack goes up to 90 days.
  • The keyed SAM.gov source (us-sam) makes at most 5 requests per run (up to 5,000 notices) to protect your key's small daily quota. SAM.gov issues keys per person and its terms forbid sharing them, so the Actor can't include one. Your key is stored encrypted, sent only to api.sam.gov and never logged. The no-key us-sam-public source has no such limit but is one day behind: SAM.gov rebuilds its public extract once a day.
  • CanadaBuys publishes its open-tender file once a day. US agencies can report awards to USAspending days late, so use a daysBack of 7 or more there. AusTender carries awards only.
  • UK awards come once per procurement and supplier. Find a Tender and Contracts Finder publish one award as several notices (award, contract, amendments) with the same ocid; only the first is returned and charged. A new supplier on the same procurement is a new award.
  • A portal that fails before returning anything is retried once after 15 seconds when time allows. If one portal is down, the others still deliver and the run says which one failed.
  • A very large request (many sources × 90 days) can outlast the run's timeout. Each source then gets a fair share of the time, keeps what it found, and the run ends successfully, naming the sources to narrow.
  • Personal data is left out. Supplier names that are a private person's name (no company legal form or business word, 2 to 4 words, a common given name or title) are removed, so supplier can be null on an award; USAspending awards to individuals are dropped. Contact fields (SAM.gov points of contact, AusTender contacts and addresses, CanadaBuys contact columns, OCDS contact points) are never output. In descriptions, emails and phone numbers become [email removed] / [phone removed] and sentences naming a contact person become [contact details removed]. This works on text patterns, so it isn't perfect: don't use these fields as a contact source.

Only new since last run, and schedules

Turn on onlyNew, save the input as a task and give it a daily schedule under Schedules in Apify Console. Each run then returns, and charges for, only notices that task hasn't returned before; a tender that is later awarded comes back once more as an award. Each saved set of sources and filters keeps its own memory, and changing them starts a fresh one. daysBack: 3 on a daily schedule gives overlap without duplicates. onlyNew is off by default, so a plain run always returns every matching notice.

Integrations: API, n8n, Make and AI agents

API. Run it and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/locaihost~gov-tenders/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["software"], "countries": ["GB"], "statuses": ["open"]}'

Apify's API clients for Python and JavaScript work the same way. Synchronous calls wait up to 5 minutes; use the asynchronous run endpoint for bigger jobs.

n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it.

AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/gov-tenders, then ask something like "Find open UK and Irish public tenders for cloud or cyber security work published in the last 7 days, worth at least £100,000, with buyer, closing date, value and link."

FAQ

How much does it cost to scrape government tenders?

$3.00 per 1,000 tenders on the Free and Starter plans, less on Scale and Business. Filtered-out and already-seen notices are free. Apify's free $5 monthly credit covers about 1,600 tenders.

Can I use it through the API or from Python?

Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.

Can I use it from an AI agent?

Yes. Through the Apify MCP server (https://mcp.apify.com/?tools=locaihost/gov-tenders) any MCP client can call it with keywords, codes or countries and read the tenders back. us-sam-public needs no key, so US federal notices work from agents too.

The Actor reads only the publishers' official open-data APIs and files, never the portals' web pages, under licences that allow commercial reuse with attribution: UK Open Government Licence v3.0, Commission Decision 2011/833/EU (TED), Open Government Licence – Canada, Creative Commons Attribution 3.0 Australia (AusTender), and public domain for US federal data (USAspending and SAM.gov). Each row carries the right attribution in licence; keep it if you republish. Currency conversions use ECB euro reference rates. You are responsible for how you use the results.

Why are some fields empty?

value is null when the buyer published no value or a placeholder. supplier only exists on awards, and is null when every winner was a private person. closingAt is empty on most awards, and ocid is set only for the UK sources.

Why did my second run return nothing?

With onlyNew on, notices this task already returned are skipped. Set onlyNew to false for the full list every time, or widen the filters or daysBack.

More from locaihost data

Did it help?

If this saved you time, a quick rating on the Store helps other people find it.

Support

Missing a country, a source or a field? Open an issue on the Issues tab: we answer issues within 24 hours.