Government Tender Feed - Canada + EU, Normalized, New-Only avatar

Government Tender Feed - Canada + EU, Normalized, New-Only

Pricing

from $2.00 / 1,000 tender results

Go to Apify Store
Government Tender Feed - Canada + EU, Normalized, New-Only

Government Tender Feed - Canada + EU, Normalized, New-Only

Open government tenders from CanadaBuys (Canada) and TED (EU) in one normalized schema, with keyword and category filters and new-since-last-run change detection. Official open data, no key. Business data only, no personal contact fields.

Pricing

from $2.00 / 1,000 tender results

Rating

0.0

(0)

Developer

Jimmy A

Jimmy A

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Open government tenders from CanadaBuys (Canada) and TED (European Union) in one clean schema. Filter by keyword and category code. Turn on only new and a scheduled run gives you just the notices you have not seen yet. Official open data, no API key, no scraping of fragile websites.

What you get per notice

A real Canada row from a test run (description cut short here):

{
"source": "CA-CanadaBuys",
"noticeId": "cb-577-38619784",
"title": "Tire Servicing Equipment",
"titleFr": "Matériel d’entretien des pneus",
"status": "Open",
"publishedDate": "2026-09-22",
"closingDate": "2026-10-08T14:00:00",
"category": "GD",
"gsin": [],
"gsinDescription": null,
"unspsc": ["25191700"],
"unspscDescription": "Vehicle servicing equipment",
"buyer": "Department of National Defence (DND)",
"region": "Ontario (except NCR), Ottawa",
"noticeType": "Request for Proposal",
"url": "https://canadabuys.canada.ca/en/tender-opportunities/tender-notice/cb-577-38619784",
"description": "W6699-270004/B - Tire Servicing Equipment\r\n\r\nReissue of Solicitation of Offers. ...",
"fetchedAt": "2026-09-23T20:02:40.090Z"
}

A real EU row from the same run:

{
"source": "EU-TED",
"noticeId": "657036-2026",
"title": "Ireland – Medical equipments – Servo-Controlled Neonatal Transport Incubator",
"status": null,
"publishedDate": "2026-09-23",
"closingDate": "2026-10-26T12:00:00+01:00",
"category": "33100000",
"cpv": ["33100000", "33152000"],
"buyer": "The National Maternity Hospital_233",
"region": "IE061, IRL",
"url": "https://ted.europa.eu/en/notice/-/detail/657036-2026",
"description": null,
"fetchedAt": "2026-09-23T20:02:40.982Z"
}

Field notes:

  • Canada: category is GD (goods), SRV (services), CNST (construction) or SRVTGD (services related to goods). gsin and unspsc are lists of codes. description is the first 1,000 characters of the notice text. url is null on a few notices where the feed gives no link.
  • EU: status and description are always null. TED search does not return them. region holds NUTS and country codes (e.g. IE061, IRL). category is the first CPV code.
  • Runs with onlyNew add isNew: true to each row.

Business data only. The CanadaBuys feed has contact fields (name, email, phone, fax). This actor never outputs them. Emails and phone numbers inside the title and description text are replaced with [email removed] and [phone removed]. The description is cut where the buyer's contact block starts (labels such as "Contracting Authority", "Contact:", "Telephone No", "Autorité contractante"), so contracting officer names are dropped in most notices. The rest of the description is the buyer's own text.

Run summary

The dataset holds tender rows only. Each batch run also writes a summary to the key-value store record OUTPUT: per source, how many notices matched and how many were output, or the error if a source failed. The run's status message gives the total.

Filters

  • keywords: case-insensitive substring match. Canada checks title and description. EU checks the title only. Use whole words; a short term like it also matches with. Any keyword matching counts.
  • cpvOrGsin: category codes, prefix-matched. Canada: UNSPSC (e.g. 8111 for IT services), or GSIN on older notices. EU: CPV (e.g. 72 for all IT services). Trailing zeros are ignored, so 72000000 works the same as 72.
  • euQuery: raw TED expert query for power users (e.g. classification-cpv=72* AND buyer-country=IRL). It replaces the default EU query and the category filter for EU. Results still come newest first.
  • onlyNew: output only notices not seen by previous runs. The first run outputs and charges every match and saves the baseline. Later runs output only unseen notices.
  • maxPerSource: cap per source per run (default 500). It applies before the only-new check, so keep it above your daily volume.
  • monitorGroup: name for a separate only-new memory, so two watchlists do not share state.

Use cases

  • Bid discovery: vendors watching for relevant government work, daily, without paying a portal
  • Market intelligence: who is buying what, across Canada and the EU
  • Lead feeds for consultants: filter by category, send new matches to email, Slack or a CRM with Apify integrations
  • AI agents: "any new IT tenders in Canada" as one Standby call

API / Standby mode

GET /?source=CA&keywords=software&onlyNew=false

Returns matching notices as JSON: { source, fetched, count, new, notices }. One source per call.

  • source: CA or EU (required)
  • keywords, code: comma-separated, same rules as the batch filters
  • euQuery, onlyNew (true or false), monitorGroup: as above
  • maxPerSource: default 100

A bad parameter returns HTTP 400 and is not charged. If CanadaBuys or TED is down, the call returns HTTP 502 and is not charged.

Pricing

EventPrice
Actor start$0.001
Per tender returned$0.002
Run digest (once per batch run)$0.02
API call (Standby, per successful call)$0.02

A daily watch that returns about 20 new tenders costs about $1.85 a month. The $0.02 run digest is charged once per batch run, even when nothing matches. If every source is down, the run fails and the digest is not charged.

Sources & coverage

  • CanadaBuys (canadabuys.canada.ca open data): every tender notice open on CanadaBuys right now (about 900), newest first. Some long-running standing offers were first published years ago. English and French titles.
  • TED (ted.europa.eu): EU competition notices from the last 7 days, newest first, up to 250 per run. Award notices are left out. English title where TED has one.

FAQ

Is this legal? Yes. Both sources are official open-data feeds published for public reuse. The actor reads no login-walled data. It drops the feed's contact fields and removes emails and phone numbers from free text.

How does "only new" work? The actor remembers notice IDs it has output (per source and monitor group, up to 20,000). The first run outputs and charges every match and saves the baseline. Later runs output only unseen notices. Use monitorGroup to keep separate watchlists independent.

Why did I get 0 results? With onlyNew on, 0 means nothing new since the last run. For a first look, turn onlyNew off or use broader keywords.

CSV export? Every Apify dataset exports as CSV, JSON, or Excel.

Feedback

Found a bug or need a field? Open an issue on the Issues tab. The actor is checked twice a day and issues get a fast fix.

If this actor saves you time, a short review on the Store page helps other people find it.