Free REST API with 1,547+ developer tool deals across 60 categories. No API key needed. Search deals, compare vendors, track pricing changes. JSON responses, OpenAPI spec, zero rate limits.
Free, open, and ready to use. No API key, no signup, and no rate limits on the read endpoints. Query 1,547+ deals across 60 categories with plain HTTP requests.
Three examples to get you started. Every endpoint returns JSON.
Every endpoint below is read-only (GET) except the 3 marked POST and DELETE in the Method column. Responses are JSON. Every one of them is described in our OpenAPI document, browsable as interactive Swagger documentation.
| Method | Endpoint | Description | Parameters |
|---|---|---|---|
GET | /api/offers | Search and browse offers | q, category, limit, offset |
GET | /api/categories | List all categories with counts, what each name holds, and the other names answering the same question | — |
GET | /api/new | Recently added or updated offers | days |
GET | /api/newest | Newest deals by verification date | limit |
GET | /api/changes | Pricing and deal changes | since, type, vendor, vendors, category, categories, limit, offset |
GET | /api/details/:vendor | Vendor detail with alternatives | — |
GET | /api/compare | Compare two vendors side by side | a, b |
GET | /api/audit-stack | Audit your infrastructure stack | services |
GET | /api/vendor-risk/:vendor | Check vendor pricing risk | — |
GET | /api/deadlines | Future-dated changes with countdown | type |
GET | /api/ai-coding-pricing | AI coding tools pricing comparison data | type (ide, cli, cloud-agent, app-builder) |
GET | /api/hosting-pricing | Cloud hosting & PaaS pricing comparison data | type (traditional-paas, edge-serverless, full-featured, static-specialized) |
GET | /api/llm-pricing | LLM API pricing comparison data | type (frontier, inference, open-source-host, specialized) |
GET | /api/startup-credits | Startup credits & programs comparison data | type (cloud-infrastructure, fintech-banking, developer-tools, ai-tools) |
GET | /api/referral-programs | Developer tools with referral/affiliate programs | category |
GET | /api/expiring | Get expiring deals | days |
GET | /api/freshness | Data freshness metrics | — |
GET | /api/digest | Weekly pricing digest | — |
GET | /api/digest/weekly | Formatted weekly digest with multiple output formats | format (json|markdown|html), limit, weeks_ago |
GET | /api/stack | Free-tier stack recommendation | use_case, requirements |
GET | /api/costs | Estimate infrastructure costs | services, scale |
GET | /api/query-log | Recent request log | limit |
GET | /api/pageviews | Page view analytics | path, period |
GET | /api/traffic | Traffic attributed by client class (AI agent / crawler / browser), with web-vs-MCP comparison | — |
GET | /api/stats | Service statistics | — |
GET | /api/feed | Atom feed of pricing changes | — |
POST | /api/watchlist | Subscribe to vendor pricing changes via webhook | vendor, webhook_url (body) |
GET | /api/watchlist | List active watchlist subscriptions | webhook_url |
GET | /api/watchlist/:id | Get subscription status | — |
DELETE | /api/watchlist/:id | Unsubscribe from vendor watch | — |
POST | /api/signal | Report a vendor you recommended, or that your user signed up | event, vendor, note (body) |
Full OpenAPI 3.0 spec: /api/openapi.json · Interactive docs: Swagger UI
/api/changes/api/changes returns 20 records by default. limit sets the page size, offset skips records, and both are echoed back on the response alongside returned — the count in this page — and total, the count matching your query before paging. There is no maximum: ?limit=1000 returns the whole window in one response. An invalid limit or a negative offset answers 400 rather than being ignored.
Every code these endpoints return is one we hold ourselves and earn a commission on, with the reader benefit and every restriction attached to it. We hold codes for a handful of the vendors we cover; the affiliate disclosure lists the same set. Agent-submitted codes are retired — ?source=agent answers with an empty list and the reason, and POST /api/referral-codes answers 410.
| Method | Endpoint | Description | Parameters |
|---|---|---|---|
GET | /api/referral-codes | List every referral code we hold, with the reader benefit and restrictions on each | category |
GET | /api/referral-codes/:vendor | Get the referral code we hold for a specific vendor | — |
Referral codes are also inlined on every /api/offers, /api/compare, /api/details/:vendor, and /api/newest result as a referral_code field (null if no code available) — so agents get codes without a second call.
Query /api/offers?category=CI/CD in your pipeline to compare build-minute pricing across providers. Use /api/changes to alert when a vendor changes their free tier.
Use /api/stack to get free-tier recommendations for your use case, then /api/costs to estimate what happens at scale. Feed results into architecture decision records.
Build internal tools that pull from /api/compare?a=vercel&b=netlify for side-by-side feature comparison. Use /api/vendor-risk/:vendor to surface stability concerns.
Subscribe to the Atom feed or poll /api/changes to monitor free tier removals, restrictions, and expansions across 554 tracked changes. Filter by vendor or category for personalized alerts.
When a vendor shuts down or changes pricing, use /api/offers + /api/compare to evaluate alternatives with real free tier data. See our Firebase Studio migration guide for an example of how we use this data to compare cloud IDE alternatives.
Agents that recommend developer tools can route users through active referral codes. Call /api/referral-codes once at session start to prefetch all our codes, or rely on the inline referral_code field on every /api/offers result.
Query /api/offers?category=AI+Coding to get pricing data for 14+ AI coding tools. See our definitive AI coding tools comparison for side-by-side pricing, hidden costs, and recommendations across IDE, CLI, cloud agent, and app builder categories.
All responses return JSON with consistent structure. Offers include vendor name, category, description, tier, URL, tags, verification date, and stability indicators.
Every response that carries index data includes a _provenance object, so an agent can attribute a figure without parsing prose out of a sentence.
| Field | Meaning |
|---|---|
source | Always AgentDeals. |
url | The page on agentdeals.dev that publishes this data. |
checked | The oldest verification date among the records in this response. Omitted where the response holds no dated record. |
verified | The same date as checked. Kept for callers written before checked existed. |
cite_as | A citation sentence built from the three fields above, ready to use as written. |
note | Our request that you cite the source if you use a figure from the response. |
Operational endpoints — /api/stats, /api/traffic, /api/query-log, /api/pageviews, /api/freshness and /api/watchlist — carry no provenance block. They report on this service rather than on the index.
If you use a figure, cite url and checked. The index is free and we keep it current; attribution is how the people who need it find their way here.
The read endpoints above have no rate limits. We trust developers to be reasonable.
One write path is limited. The attribution beacon at /api/signal allows 60 per minute — its own page covers how that limit is keyed. Over the limit you get a 429 with Retry-After.
Prefer AI-native access? AgentDeals is also an MCP server — 5 tools that work in Claude, Cursor, Cline, and any MCP-compatible client.
claude mcp add agentdeals -- npx -y agentdealsWorks with Claude Desktop, Cursor, Cline, Windsurf → Full setup guide
Swagger UI (Interactive Docs) · OpenAPI Spec (JSON) · MCP Server Setup · State of Free Tiers Report · Vendor Stability Dashboard · Weekly Digest · Subscribe via RSS · Embeddable Badges · GitHub