Call this when an agent holds EU/DACH funding calls (see /v1/opportunities) and needs what
Call this when an agent holds EU/DACH funding calls (see /v1/opportunities) and needs what changed since a date: new calls, deadline moves with extraction basis, amount or title edits, and deadline-crossed closures, each dated to the daily snapshot that first showed it. Call /count (free) first: ftop_sedia changes most days, each DACH source about weekly. Own archive since 2026-05; field changes from 2026-08-24; DACH limited to crawled pages. Filters: since (required), until, source, kind.
20000 (raw units)
price
1
calls / 30d
1
unique payers
2026-09-09
updated
Provider
wailand.tailf99551.ts.net · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x32E293A7fA946331B3eCd013cf0461Bf32C99A9d",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "20000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"kind": "deadline_changed",
"since": "2026-09-01"
},
"type": "http"
},
"output": {
"example": {
"data": [
{
"as_of": "2026-09-08",
"deadline_basis": "structured",
"deadline_iso": "2027-06-01",
"envelope_version": "changes-1.0",
"events": [
{
"basis_new": null,
"basis_old": null,
"deadline_basis": null,
"deadline_iso": "2026-07-16",
"field": null,
"kind": "closed",
"new": null,
"observed_at": "2026-08-06",
"old": null,
"prev_observed_at": "2026-06-13"
},
{
"basis_new": "structured",
"basis_old": "structured",
"deadline_basis": null,
"deadline_iso": null,
"field": "deadline_iso",
"flip_flop": true,
"kind": "deadline_changed",
"new": "2026-10-15",
"observed_at": "2026-08-25",
"old": "2027-06-01",
"prev_observed_at": "2026-08-24"
},
{
"basis_new": "structured",
"basis_old": "structured",
"deadline_basis": null,
"deadline_iso": null,
"field": "deadline_iso",
"flip_flop": true,
"kind": "deadline_changed",
"new": "2027-06-01",
"observed_at": "2026-08-26",
"old": "2026-10-15",
"prev_observed_at": "2026-08-25"
}
],
"events_truncated": true,
"first_seen": "2026-06-13",
"last_seen": "2026-09-08",
"last_shard_date": "2026-09-08",
"observations": 31,
"present_in_latest": true,
"rolling_deadline": false,
"source": "ftop_sedia",
"source_id": "DIGITAL-2022-SKILLS-03-SPECIALISED-EDU",
"status": "open",
"title": "Specialised education programmes or modules in key capacity areas",
"url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/DIGITAL-2022-SKILLS-03-SPECIALISED-EDU"
}
],
"meta": {
"as_of": {
"ftop_sedia": "2026-09-08"
},
"attribution": "Contains public sector information from the EU Funding & Tenders Portal and national funding bodies, reused under Directive (EU) 2019/1024 / Decision 2011/833/EU terms. Not endorsed by the European Union. Change events are derived by wAILand from its own daily snapshot archive.",
"degraded": false,
"license": "Internal use by the paying agent/operator; redistribution of substantial parts prohibited.",
"row_count": 1,
"truncated": false
}
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET",
"HEAD",
"DELETE"
],
"type": "string"
},
"queryParams": {
"properties": {
"kind": {
"description": "Restrict to one event kind.",
"enum": [
"appeared",
"closed",
"deadline_changed",
"amount_changed",
"title_changed"
],
"type": "string"
},
"since": {
"description": "ISO date, EXCLUSIVE: events observed after this snapshot date. Required.",
"format": "date",
"type": "string"
},
"source": {
"description": "Restrict to one upstream portal.",
"enum": [
"ftop_sedia",
"cascade_funding",
"aws_austria",
"ibb_berlin",
"l_bank_bw",
"lfa_bayern",
"nrw_bank"
],
"type": "string"
},
"until": {
"description": "ISO date, inclusive; defaults to the newest snapshot.",
"format": "date",
"type": "string"
}
},
"required": [
"since"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://wailand.tailf99551.ts.net/v1/opportunity-changes" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://wailand.tailf99551.ts.net/v1/opportunity-changes");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://wailand.tailf99551.ts.net/v1/opportunity-changes")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/7739.json, and this resource appears in /discovery/resources and /discovery/search.