Rib APIvergabe.rib.de ↗
Access German public procurement data from RIB eVergabe: search tenders, retrieve award notices, EU prior information notices, and CPV codes via REST.
What is the Rib API?
The vergabe.rib.de API exposes 5 endpoints covering German public procurement data from the RIB eVergabe platform. Use search_tenders to query active tender publications with filters for keyword, location, radius, and procedure type, or call get_tender_details to retrieve structured fields including CPV codes, dates and deadlines, contracting authority, and subdivision into lots for any specific tender by ID.
curl -X GET 'https://api.parse.bot/scraper/7e0e2e6e-c1b7-41fe-830e-7c550a82ca47/search_tenders?sort=created+desc&limit=5&radius=30&procedure_type=eu' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace vergabe-rib-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: RIB eVergabe SDK — search tenders, drill into details, browse awards and news."""
from parse_apis.rib_evergabe_api import RibVergabe, Sort, ProcedureType, TenderNotFound
client = RibVergabe()
# Search for recent tenders sorted by newest first
for tender in client.tendersummaries.search(sort=Sort.CREATED_DESC, limit=3):
print(tender.title, tender.publication_date, tender.contracting_authority)
# Drill into the first tender for full details (deadlines, CPV codes, procedure info)
summary = client.tendersummaries.search(sort=Sort.CREATED_DESC, limit=1).first()
if summary:
detail = summary.details()
print(detail.action_number, detail.execution_place)
print(detail.dates_and_deadlines, detail.tender_details)
# Browse EU prior information notices
for notice in client.tendersummaries.list_eu_prior(limit=3):
print(notice.title, notice.contracting_authority, notice.url)
# Browse contract award notices
for award in client.tendersummaries.list_awards(limit=3):
print(award.title, award.publication_date)
# Handle a missing tender gracefully
try:
bad_summary = client.tendersummaries.search(limit=1).first()
if bad_summary:
bad_summary.details()
except TenderNotFound as exc:
print(f"Tender gone: {exc.tender_id}")
# List latest news articles
for article in client.newsarticles.list(limit=3):
print(article.title, article.link)
print("exercised: tendersummaries.search / details / list_eu_prior / list_awards / newsarticles.list")
Search for tender publications (Bekanntmachungen) with optional filters for keyword, location, procedure type, and sort order. Returns paginated results ordered by publication date. Each result is a lightweight summary; use get_tender_details for full information including deadlines, CPV codes, and contracting authority contact.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results. |
| limit | integer | Maximum number of results to return. |
| query | string | Search keyword to filter tenders by title or description. |
| radius | string | Search radius in km around the specified location. |
| location | string | Location filter (city or region name, e.g. 'Berlin', 'München'). |
| procedure_type | string | Filter by procedure type. |
{
"type": "object",
"fields": {
"items": "array of TenderSummary objects each containing id, title, contracting_authority, publication_date, description_summary, and url"
},
"sample": {
"data": {
"items": [
{
"id": "597087",
"url": "https://www.meinauftrag.rib.de/public/publications/597087",
"title": "00_44226_064301 Austausch USV-Anlage",
"publication_date": "11 June 2026",
"description_summary": "externes Vergabeverfahren (LBV SH)",
"contracting_authority": "Landesbetrieb Straßenbau und Verkehr Schleswig-Holstein"
}
]
},
"status": "success"
}
}About the Rib API
Tender Search and Details
The search_tenders endpoint accepts keyword queries, a location name combined with a radius in kilometres, and a procedure_type filter (eu, national, or exante). Results are paginated and sortable by creation date. Each item in the response includes an id, title, contracting_authority, publication_date, description_summary, and a direct url. Pass the id into get_tender_details to receive the full record: CPV codes, action_number, execution_place, brief_description, a tender_details object covering procedure regulation and lot subdivision, and a dates_and_deadlines object with fields like Period, Expiration time, Opening Date, and Award period.
Award Notices and EU Prior Information
search_award_notices returns contract award notices (Vergabeinformationen) with the same metadata shape as tender results: id, title, contracting_authority, publication_date, description_summary, and url. search_eu_prior_information returns EU Prior Information Notices (Vorinformationen) with equivalent fields. Both endpoints accept a limit parameter to control result count but do not currently expose keyword or location filtering.
News Feed
The get_news endpoint retrieves articles from the RIB eVergabe news section. Each article object contains title, link, date, and summary, making it straightforward to monitor platform announcements, regulatory updates, and procurement news alongside live tender data.
The Rib API is a managed, monitored endpoint for vergabe.rib.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vergabe.rib.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official vergabe.rib.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor new German public tenders matching a specific trade category by filtering
search_tenderswith a keyword andprocedure_type. - Build a regional tender alert system using the
locationandradiusparameters to scope results to a target city or district. - Populate a CPV-code-indexed database of active procurement opportunities using
cpv_codesfromget_tender_details. - Track submission deadlines by extracting
dates_and_deadlines.Expiration timeandOpening Datefields for tenders of interest. - Audit awarded contracts by querying
search_award_noticesand correlating award metadata with the original tender publication. - Feed a procurement intelligence dashboard with EU prior information notices via
search_eu_prior_informationto anticipate upcoming large tenders. - Aggregate contracting authority contact details from the
contracting_authority.emailfield across multiple tenders for supplier outreach mapping.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does vergabe.rib.de have an official developer API?+
What does `get_tender_details` return beyond what `search_tenders` provides?+
search_tenders returns summary-level fields: id, title, contracting_authority, publication_date, description_summary, and url. get_tender_details adds cpv_codes, action_number, execution_place, brief_description, a tender_details object (regulation, procedure type, lot subdivision), and a dates_and_deadlines object with specific date fields like Expiration time, Opening Date, Award period, and Bidders requests.Can I filter award notices or EU prior information notices by keyword or location?+
search_award_notices and search_eu_prior_information currently accept only a limit parameter — keyword, location, and procedure_type filters are not exposed for those endpoints. search_tenders does support those filters. You can fork this API on Parse and revise it to add filtering parameters to the award or prior-information endpoints.Is there a detail endpoint for award notices similar to `get_tender_details`?+
search_award_notices but does not include a dedicated detail endpoint for individual award records. You can fork this API on Parse and revise it to add an award-notice detail endpoint returning fuller contract information.How current is the tender data, and does the API support pagination beyond a result limit?+
search_tenders endpoint supports a limit parameter to control result count and returns publication_date per item, but there is no explicit page/offset parameter exposed — results are capped by the limit value. For deeper pagination you can fork the API on Parse and revise it to add offset or cursor-based parameters.