Deal and pricing changes
Returns tracked pricing and tier changes across vendors. Filter by date, change type, vendor, or category. A tracked pricing change is a change a vendor made to published terms, which we recorded, still stands, and we have not withdrawn. Most carry the date the terms took effect; the rest carry the date we read the page. The rule and the four totals it separates are at /changes#what-counts, and every response carries them as change_census.
Request
- Base URL: https://agentdeals.dev
- URL: https://agentdeals.dev/api/changes
- Auth: none required
Query parameters
Only return changes dated on or after this date. Accepts a calendar date (YYYY-MM-DD) or an ISO-8601 timestamp, which is narrowed to the date it names — the whole of that day is returned either way. A date that does not exist answers 400. Default: 30 days ago, and only when no other filter is passed — a request carrying type, vendor, vendors, categories or category searches the whole change log unless since says otherwise. The filter compares against each record's date. Where date_meaning is "effective", that is the day the change took effect; where it is "discovered", it is the day we recorded the change, and when it took effect is unknown. Every response states the window it applied under date_window.
Filter by change type. Every type a record can carry is accepted; the same list types the change_type field on the records that come back.
Filter by vendor name. Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact.
Comma-separated vendor names to filter by (e.g. 'Vercel,Supabase,Clerk'). Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact.
Comma-separated category names to filter by (e.g. 'Database,Cloud Hosting'). Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact.
Comma-separated category names to filter by (e.g. 'Database,Cloud Hosting'). Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact.
Max results per page
Number of results to skip
Records we have withdrawn as our own error (standing 'retracted') are left out unless you ask for them. Set true to receive them alongside the rest; they arrive carrying standing 'retracted' and impact 'none'. Either way, retracted_excluded reports how many your query matched and did not receive. Anything other than 'true' or 'false' answers 400 rather than being ignored.
Records of our own index housekeeping (reports 'our_index') are left out unless you ask for them. They say we stopped listing an offer of ours, not that the vendor changed anything, so counting them as vendor activity overstates it. Set true to receive them alongside the rest. Either way, index_housekeeping_excluded reports how many your query matched and did not receive. Anything other than 'true' or 'false' answers 400 rather than being ignored.
Response
List of deal changes
Changes
No recorded changes to this operation across all 1 revision of this API.