German Tender Monitor
Pricing
$1.50 / 1,000 tender rows
German Tender Monitor
Monitor German public tenders by keyword, CPV, region, and freshness. Export clean procurement rows for sales, research, API, CSV, and agent workflows.
Pricing
$1.50 / 1,000 tender rows
Rating
0.0
(0)
Developer
Francesco Scilipoti
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
German Tender Monitor helps you find relevant German public tenders without checking procurement portals by hand every day.
Give it a keyword, CPV code, region, publication date, or minimum value. It returns structured tender rows that work well in Apify datasets, CSV exports, spreadsheets, CRM workflows, dashboards, and API pipelines.
This is not meant to replace a full procurement suite. It is a lightweight monitoring layer for teams that want a clean German tender feed they can run once, schedule daily, or connect to their own tools.
Common searches this Actor is built for:
- German public tender API
- public procurement data Germany
- German procurement feed
- tender monitoring Germany
- CPV tender monitor
- Ausschreibungen API
- public sector buying signals
What You Can Do With It
- Find software, IT, construction, cleaning, consulting, marketing, engineering, or other public tenders by keyword.
- Track categories with CPV prefixes, for example
45for construction or72for IT services. - Monitor a region, city, postcode, or German NUTS-style region code.
- Run a small one-off research export.
- Schedule a recurring monitor and return only tender rows that were not seen before.
- Export the result as JSON or CSV for follow-up work.
Good First Run
Start small:
{"maxItems": 20}
If you do not set a publication day or month, the Actor looks for the latest useful daily export in a short lookback window. This makes first tests and scheduled runs less brittle around weekends and holidays.
Example: Software And IT Tenders
{"maxItems": 20,"keyword": "software"}
Typical fields to inspect:
titlebuyerbuyerDomaincpvcpvLabelpublicationDatedeadlineStatusleadReasondetailUrl
Real sample from a live run:
Hard- und Softwarewartung für Fortinet-ProdukteBuyer: EmschergenossenschaftCPV: 72000000CPV label: IT services: consulting, software development, Internet and support
Example: Construction Tenders By CPV
{"maxItems": 20,"cpv": "45"}
CPV 45 covers construction work. The Actor adds cpvLabel, so downstream users do not need to memorize CPV divisions.
Real sample from a live run:
Neubau eines BusbetriebshofesBuyer: Freisinger Stadtwerke Versorgungs-GmbHEstimated value: 1102545 EURLead reason: Matched CPV 45; estimated value 1102545 EUR; Construction work
Example: Regional Tender Monitoring
{"maxItems": 20,"region": "DE6"}
Use region for city names, postcodes, German region codes, or country subdivisions.
Real sample from a live Hamburg run:
Eißendorfer Straße 26 - AbbuchBuyer: GMH | Gebäudemanagement Hamburg GmbHCity: HamburgRegion: DE600Estimated value: 8641000 EUR
Example: Daily New-Only Feed
{"maxItems": 20,"keyword": "software","newOnly": true,"stateKey": "software-daily"}
The first run creates the baseline. Later runs with the same stateKey return only tender rows that were not seen before.
Use different state keys for different monitors:
software-dailyhamburg-constructioncleaning-weeklyconsulting-north-germany
Input Fields
pubDay: publication day inYYYY-MM-DD.pubMonth: publication month inYYYY-MM. Use this for broader research.maxItems: maximum number of rows returned.keyword: search across title, buyer, description, CPV, city, and region.cpv: CPV prefix, for example45or72.region: city, postcode, region, subdivision, or country code.minEstimatedValue: return rows above this value when a value is available.includeAwardNotices: include award/change/result notices.fallbackDays: look back this many publication days when no date/month is set.newOnly: return only rows not seen before for the selected monitor.stateKey: stable key for thenewOnlystate.resetSeen: clear stored seen state before this run.
Output Fields
Tender and buyer:
titlebuyerbuyerIdentifierbuyerWebsitebuyerDomainbuyerProfileUrlbuyerLegalTypedescriptiondetailUrl
Location and category:
citypostalCoderegioncountrycpvcpvLabelcpvDivisionadditionalCpvsadditionalCpvLabels
Dates, value, and source context:
estimatedValuecurrencypublicationDatesourceAgeDayssourceFreshnessdeadlineDatedeadlineTypedeadlineStatuscontractStartDatecontractEndDate
Workflow fields:
matchedKeywordmatchedCpvmatchedRegionleadReasonrankScore
Source and dedupe fields:
sourcesourceIdsourceNoticeIdsourceExportUrlsourcePrioritycanonicalFingerprintduplicateOfduplicateConfidencedetectedAt
SUMMARY And Source Health
Each run also writes a SUMMARY record to the key-value store.
Check it when a run is empty or looks suspicious. It includes the normalized input, selected export, fallback attempts, source row counts, matched row counts, and sourceHealth.
sourceHealth tells you:
- whether the public data export was reachable
- how many fallback attempts were used
- how many source notice rows were found
- how many rows matched your filters
- what to try next if the result is empty
For newOnly runs, the summary also includes the monitoring key, previous seen count, matched item count, newly emitted item count, and total seen count.
Pricing
This Actor uses Apify Pay per event.
- Main event:
Tender row - Technical event:
apify-default-dataset-item - Price:
$0.0015per dataset row - Simple estimate:
$1.50 / 1,000 tender rows
Examples:
- 20 rows: about
$0.03 - 100 rows: about
$0.15 - 1,000 rows: about
$1.50
Apify may also charge normal platform usage depending on your account and run settings. Keep maxItems low for the first test.
API And Automation
You can run the Actor from the Apify Console, Apify API, SDKs, schedules, webhooks, or automation tools.
Basic API call:
curl -X POST "https://api.apify.com/v2/acts/sgforce~german-tender-monitor/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"maxItems": 20,"keyword": "software","newOnly": true,"stateKey": "software-daily"}'
This makes the Actor useful as a small German public procurement data API, not just as a manual export tool.
Official Sources And Limits
The Actor builds one normalized tender feed from publicly accessible official procurement sources. Depending on the selected date window and filters, these include sources such as:
- German public procurement bulk exports
- TED Search API for Germany-related EU notices
- selected regional Open Data ZIP feeds, including NRW procurement feeds
This source mix is not limited to one search page or one portal view. Rows are normalized and deduplicated across available official/public data sources with stable source IDs, canonical fingerprints, source priority, and normalized tender/buyer/category fields.
Limits to know:
- This is not complete coverage of every German procurement portal or every possible official source.
- TED is used through the official Search API. The Actor uses the API result fields for broad stable coverage and does not mass-download TED XML in normal runs.
- TED notices are capped per run for stability. Use
pubDay,pubMonth,cpv,keyword, andmaxItemsto keep runs targeted. - Some notices do not include estimated value, buyer website, detailed deadline, or complete location fields.
- Deadline fields are conservative. If no reliable date is available,
deadlineStatusismissinginstead of guessed. - Publication-day exports are usually useful after official processing, generally the following day.
- The Actor does not submit bids, download restricted files, log into procurement portals, or provide legal/procurement advice.
Who This Is For
Good fit:
- B2B sales teams watching public-sector demand
- IT, construction, cleaning, consulting, marketing, or engineering suppliers
- agencies and consultants doing market research
- teams that want a CSV/API feed instead of manual portal checks
- data builders and agents that need structured German tender rows
Bad fit:
- teams that need a full bid-management system
- users who expect complete national coverage across every German portal
- workflows that require restricted tender documents or bid submission
- legal or procurement-advice use cases
FAQ
Is this a German tender API?
It can be used that way. The Actor runs on Apify and returns structured JSON/CSV rows for German public tenders. You can call it through the Apify API, SDKs, schedules, or webhooks.
Can I monitor tenders by CPV code?
Yes. Use the cpv input with a prefix such as 45 for construction or 72 for IT services.
Can I monitor only new tenders?
Yes. Use newOnly: true with a stable stateKey. The first run creates the baseline; later runs emit only unseen rows.
Is this complete coverage of all German tenders?
No. It is a focused monitoring feed across several public data sources. Germany has multiple procurement portals, so do not treat this as complete national coverage.
Why are some fields empty?
The Actor preserves what the public data provides. Some notices do not include estimated values, buyer websites, detailed deadlines, or full locations.
Does it scrape portal pages?
It does not automate a visual search page. It reads public bulk export data and turns the tables into joined tender rows.
Does it submit bids or contact buyers?
No. It only returns structured tender notice data.
Can AI agents use it?
Yes, if they can call Apify Actors or consume Apify datasets. The output is predictable JSON with fields such as title, buyer, cpvLabel, buyerDomain, deadlineStatus, and leadReason.
Demo And Validation Samples
Reusable guide:
docs/how-to-monitor-german-public-tenders-with-apify.md
Validation samples:
docs/validation/software-sample-output.jsondocs/validation/construction-sample-output.jsondocs/validation/hamburg-sample-output.json
These include real software, construction, and Hamburg-region runs.
Support
If a run looks wrong, open the run's SUMMARY record first.
For support, include:
- Actor run ID
- input JSON
SUMMARYcontent- one example tender row if the issue is about a field
- what you expected to see
Please do not send private procurement portal credentials. This Actor is designed around public and officially accessible procurement data sources.
Changelog
0.1.16: Added source balancing for broad multi-source runs so large default/monthly exports include visible OEV, TED, and NRW coverage instead of letting one source dominate the first returned rows.0.1.15: Added multi-source default coverage with German procurement bulk data, TED Search API Germany notices, and selected NRW Open Data feeds. Added cross-source deduplication with source IDs, source priority, canonical fingerprints, and title/buyer/CPV/location matching.0.1.7: AddedsourceHealthto the run summary, including source reachability, attempted exports, source row counts, matched row counts, and empty-result status.0.1.5: Added CPV labels, additional CPV codes, buyer enrichment, deadline/opening-date status, source freshness, and lead-reason fields.0.1.4: AddednewOnlymonitoring mode with persistent seen-state keys for scheduled workflows and alerts.0.1.3: Added default lookback behavior so no-date runs search recent publication days until useful results are found.0.1.1: First deployed Apify Cloud build.