Government Tenders Scraper: Global Notices & Awards
Pricing
from $2.40 / 1,000 notices
Government Tenders Scraper: Global Notices & Awards
Search official public procurement notices across countries. Get buyers, deadlines, values, classification codes, lots, document links and awards in one schema, with deduplication and new-notice alerts.
Pricing
from $2.40 / 1,000 notices
Rating
0.0
(0)
Developer
Zaiq
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Government Tenders Scraper: official notices and awards in one schema

Get government procurement notices with a plain verdict, buyer, deadline, classification codes, available values, lots, document links and award information. Search official public feeds across Europe, the UK, US federal procurement, Australia, Canada, France and New Zealand.
$0.003 per notice on every source and every connection route, the same price on every Apify plan. Failures and status notes are free. The smallest input is {}: it returns up to 10 recent TED tenders with a future deadline. No source account or API key is needed.
Coverage is specific to each source. TED supplies notices published on the European portal. Find a Tender and Contracts Finder supply UK OCDS releases. SAM.gov supplies federal search records and notice links. AusTender supplies awarded contracts. CanadaBuys supplies the federal open-tender file and award files. BOAMP supplies French notices. GETS supplies New Zealand’s current-tenders RSS feed.
What you get
| Field | What it holds |
|---|---|
| verdict | A one-line status, such as a tender deadline, an award amount, or an explanation of a free note row. |
| source, noticeId, procurementId | The originating feed and identifiers. A procurement process can have several distinct tender, award and amendment notices. |
| title, description, buyer, buyerId | Source text and the named procuring organisation where published. Text remains in its original language. |
| country, countries, region | Buyer country on TED and the national procurement jurisdiction on national feeds, plus published region codes or names. |
| cpvCodes, unspscCodes, naicsCodes | Separate classification systems, kept as strings so leading zeros survive. |
| estimatedValue, currency, valueMin, valueMax | Published estimates and ranges. A missing value stays null. |
| published, updated, deadline, deadlines, deadlinePrecision | Published dates and the source’s closing dates. Date-only deadlines and times without a timezone are labelled. |
| procedure, lots, lotTitles | The procedure and available lot information. TED’s independent lot-ID and title lists are kept separate. |
| documents | Public document links supplied by a feed, plus the official notice XML link on TED. Documents are not downloaded. |
| awardWinner, awardValue, awardCurrency, awards | Published winners and values. Multiple award values are combined only when all values are available in the same currency. |
| sourceUrl, dataUrl, crossPortalIds | A public notice or official data link, its source feed and exact identities used for deduplication. |
| note, notes, kind, resultId | Missing-data explanations, free source notes and a stable delivery ID. Filter kind=notice to keep only procurement records. |
| SUMMARY | Per-source rows, scans, requests, traffic, duplicates, skipped malformed records, limits, route changes and alert state. |
What people use it for
- Supplier bid discovery: Search the places where buyers publish tenders, then filter by a relevant sector code, buyer jurisdiction, deadline and disclosed budget.
- Bid consultancy: Collect several public feeds into the same columns for review, qualification and bid tracking.
- Award research: See named suppliers and disclosed contract values, without confusing an estimated opportunity value with a completed award.
- Notice alerts: Schedule new-notice mode with a consistent named state store to deliver previously unseen notices within a rolling publication window.
- Procurement data pipelines: Export JSON, CSV or spreadsheet data with source IDs and links, and retain free status rows so an unavailable source is visible.
How to use it
- Run with the default input for up to 10 recent TED tenders.
- Select your sources and notice types. For Australia, select award. Add optional keywords, codes, buyer countries, values or closing dates.
- Set Maximum notices per source and Maximum cost per run. These are separate limits.
- Open Notices or Award details in the dataset. Read SUMMARY for coverage and any skipped sources.
- For repeated alerts, choose New notices since previous runs, keep the same state store and filters, and schedule runs without overlap.
Input
| Field | Example | Notes |
|---|---|---|
| sources | ["ted", "uk_find_tender"] | Eight official feeds; see the source descriptions above. |
| keywords | ["software", "maintenance"] | Any literal phrase may match title, description or buyer. Keywords are not translated. Empty means all. |
| noticeTypes | ["tender", "award"] | Also prior_information and other; coverage varies by source. |
| maxResults | 10 | Per source, after filtering, deduplication and alert suppression. Maximum 10,000 per source. |
| countries | ["IE", "GB"] | ISO country codes. TED matches buyer country; national feeds use their procurement jurisdiction. |
| cpvCodes / unspscCodes | ["72"] / ["43"] | Codes or numeric prefixes. A match in either selected code system is enough. Sources without either scheme are skipped. |
| currency, minValue, maxValue | EUR, 100000, 5000000 | Currency is required for a value range. Estimates for tenders; award values for awards. No exchange-rate conversion. |
| publishedWithinDays | 30 | Rolling window. Use publishedFrom and publishedTo for an inclusive YYYY-MM-DD range, up to 365 days. |
| deadlineFrom / deadlineTo | YYYY-MM-DD | Inclusive closing-date window; records without a deadline are excluded. |
| openOnly | true | Only tenders with a known, non-expired deadline. Does not exclude awards or prior-information notices. |
| deduplicate | true | Exact notice identities across selected sources, not similar titles. Different publication versions stay distinct. |
| mode / stateStore | new / procurement-alerts | Named persistent state; first run delivers the current matches, later runs suppress identities already delivered. |
| maxScannedPerSource | 5000 | Before filters. Increase for a sparse search; maximum 50,000. |
| maxRequestsPerSource | 120 | Includes retries. Maximum 150; 429 and 503 stop that source. |
Output
Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):
{"kind": "notice","verdict": "Award notice — GBP 120,000.00","source": "uk_find_tender","noticeId": "100001-2026","title": "Building roof replacement","buyer": "Example Public Buyer","country": "GB","noticeType": "award","cpvCodes": ["45261900","45260000","45261210","45261910","45261920"],"estimatedValue": null,"currency": null,"published": "2026-10-23T19:46:24+01:00","deadline": null,"procedure": "Restricted procedure","awardWinner": "Example Services Ltd","awardValue": 120000.0,"awardCurrency": "GBP","sourceUrl": "https://procurement.example/notices/100001-2026"}
This example comes from the real UK award test on 25 October 2026. Organisation and supplier names, the notice identifier and site address have been replaced; the title has been paraphrased. Dates, classifications and amounts are from that delivered row. SUMMARY records source coverage, any free failures and the charged events.
Pricing
- $0.003 per delivered notice ($3 per 1,000), whatever the source or connection route.
- These are the same prices on every Apify plan. There is no AI step or separate AI bill.
- Failures, no-match notes, skipped duplicate notices and previously delivered alert notices have no notice charge.
- Apify’s $0.00005 start charge counts towards the buyer’s Maximum cost per run.
What typical jobs cost at the list price:
| Job | Cost |
|---|---|
| 10 notices | $0.03005 including the start charge |
| 100 notices | $0.30005 including the start charge |
| 2,000 notices | $6.00005 including the start charge |
| No delivered notices | $0.00005 start charge; no notice charges |
Set Maximum cost per run to control the total. At least $0.00305 covers one notice and Apify’s $0.00005 start charge. Free notes still appear after the limit.
Tips
- Prefer CPV or UNSPSC codes when terminology varies between countries. Do not use one classification system as a substitute for the other.
- Use award mode when researching suppliers and contract values. An award can retain an old tender closing date; that does not make it an open opportunity.
- For alerts, allow a publication window long enough to overlap feed updates. Only delivered identities are remembered, so an incomplete run does not mark unseen notices as processed.
- Increase the scan limit when a local filter is very selective. SUMMARY distinguishes a complete no-match search from an incomplete portion of a feed.
- Use the source link to check the current notice and submission instructions. The Actor does not submit bids or download restricted documents.
Use it through the API
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("zaiq/government-tenders-scraper").call(run_input={"sources": ["ted"], "keywords": ["software"], "maxResults": 10})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('zaiq/government-tenders-scraper').call({"sources": ["ted"], "keywords": ["software"], "maxResults": 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();
HTTP (one call, results back)
curl -X POST 'https://api.apify.com/v2/acts/zaiq~government-tenders-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \-H 'Content-Type: application/json' \-d '{"sources": ["ted"], "keywords": ["software"], "maxResults": 10}'
Integrations and schedules
- Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
- Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
- Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.
Use it with AI agents (MCP)
Add Apify's MCP server (https://mcp.apify.com) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "recent software tenders with deadlines and disclosed values from the selected official sources". AI agents can also pay for runs directly through Apify's agentic payments.
Limits
- Coverage is limited to notices the named feeds publish. This is not a complete worldwide database of every government contract.
- Australia’s open API supplies awarded contract notices, not live approaches to market. Canada’s tender coverage is the current open federal file, not its full historical archive. GETS is the current-tender RSS feed and does not provide structured awards or contract values.
- US federal rows are public search records and notice links. Use the separate SAM.gov Actor when you need full notice details and attachment lists.
- Some sources do not support keyword, code or value search server-side. Those filters are applied to the records read within the scan, request and time limits. A limited scan is reported as incomplete.
- A source stops after 150 requests, ten minutes of source time, or a response above 64 MiB. Limits and malformed records are listed in SUMMARY. A rate-limit response stops that source without rotating addresses to evade its cooldown.
- Canada uses direct then datacenter routes only. Its bulk files are too large for an economical residential fallback at these notice prices. If both routes are refused, it returns a free note.
- Other feeds try direct, datacenter, then fresh residential sessions when an address is refused or expected data is missing. A failed final route remains a visible source issue. No CAPTCHA is solved and no login is attempted.
- Exact shared notice IDs support cross-portal deduplication. Notices lacking shared identifiers can remain separate even if their titles look similar. Tender and award stages are not merged merely because they concern the same procurement.
- A value filter excludes undisclosed amounts. Canada’s zero placeholders remain in the raw amount fields and are not advertised as free contracts. Currencies are never combined across currencies.
- TED’s search API returns lot fields as independent lists. The headline deadline is the earliest available lot deadline; use the linked official XML for complete lot-level relationships.
- New-notice mode remembers up to 100,000 identities per filter profile. It detects unseen notices within the configured window, not arbitrary historical changes outside it. Store retention, concurrent runs or an evicted identity can cause a notice to appear again. Use sequential schedules.
- The default input was verified with 10 notices in about five seconds locally. A 2,200-notice pull was also checked. Source response times and availability vary.
FAQ
Do I need accounts on the procurement websites?
No. The Actor reads public signed-out feeds. A linked procurement portal may require registration to obtain bidding documents or submit a bid; the Actor does not do that.
Does it cover all of Europe?
It covers notices published on TED, including buyers in EU and EEA countries and other jurisdictions represented there. National contracts below publication thresholds may appear only in their own portals. France additionally has a separate BOAMP adapter.
Can I search several countries together?
Yes. Select the sources and countries, then apply the same notice, code, value and deadline filters. The result limit is per source.
Why is a field empty?
A source may not publish that field, or it may be absent in an individual notice. The Actor preserves nulls rather than estimating a budget, winner, currency or closing time.
How do updates differ from new notices?
The state tracks published notice identities. A new release or publication version can be new; an in-place edit retaining the same identity is suppressed. This is a new-notice alert feed, not a full change-history service.
Is a completed run always exhaustive?
No. The run can finish successfully after delivering the requested number of rows. SUMMARY.complete and each source’s stopReason distinguish exhausted source windows, reached limits and source failures.
What happens after a restart?
Stable delivery IDs are read from the existing dataset. Already delivered rows are neither written nor charged again. Pending alert identities are recovered from those delivered rows.
Are there extra charges for documents or AI?
No documents are downloaded and no AI model is used. Only the notice events and Apify’s start charge apply.
Related Actors from Zaiq
- sam-gov-scraper: US federal notices with full details and attachment links
Support
Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.
Also found as: government tenders scraper, public procurement API, tender notices, contract awards, TED tenders, UK procurement notices, CPV search, UNSPSC search, new tender alerts.