Unsubscribe Intelligence

Developers

Unsubscribe Intelligence API

The public API for unsubscribe navigation and friction scoring: browse the service catalog, fetch step-by-step cancellation guides, and six-axis cancellation-difficulty analysis. No key required.

Base URLhttps://api.unsubscribetool.com

Endpoints

Unified envelope:{ code, data, message } · code: "0" = OK

GET/api/v1/servicesList services

Paginated service catalog. Optional: q (search), cat (category slug), page (default 1).

Example request
curl "https://api.unsubscribetool.com/api/v1/services?q=netflix&page=1"
Example response
{ "code": "0", "data": { "items": [ /* … */ ], "total": 203 } }
GET/api/v1/services/:slugGet a service

Full directory record for one service: steps, traps, friction, and source links.

Example request
curl "https://api.unsubscribetool.com/api/v1/services/netflix"
Example response
{ "code": "0", "data": { "service": "Netflix", "steps": [ /* … */ ], "friction": { /* … */ } } }
GET/api/v1/categoriesList categories

All browse categories with a per-category service count.

Example request
curl "https://api.unsubscribetool.com/api/v1/categories"
Example response
{ "code": "0", "data": { "categories": [ /* … */ ] } }
POST/api/v1/guideCancellation guide

Step-by-step cancellation walkthrough with traps and an explanation. Body: { slug, options?: { tone?: "neutral"|"reassuring"|"terse", locale?: string } }. Rate limit 20/min.

Example request
curl -X POST "https://api.unsubscribetool.com/api/v1/guide" \
  -H "Content-Type: application/json" \
  -d '{"slug":"netflix"}'
Example response
{ "code": "0", "data": { "entry": "Netflix", "steps": [ /* … */ ], "traps": [ /* … */ ], "explanation": "…", "source_url": "…" } }
POST/api/v1/analyzerFriction analysis

Six-axis cancellation-difficulty score with a per-axis explanation. Body: { slug }.

Example request
curl -X POST "https://api.unsubscribetool.com/api/v1/analyzer" \
  -H "Content-Type: application/json" \
  -d '{"slug":"netflix"}'
Example response
{ "code": "0", "data": { "friction": { /* … */ }, "difficulty": 5.4, "tier": "Moderate", "why": [ /* … */ ] } }
POST/api/v1/link-checkLink health check

Queue an async re-verification of a service’s cancellation link. Body: { slug }. Returns 202.

Example request
curl -X POST "https://api.unsubscribetool.com/api/v1/link-check" \
  -H "Content-Type: application/json" \
  -d '{"slug":"netflix"}'
Example response
{ "code": "0", "data": { "queued": true }, "message": "" }

Access & rate limits

The catalog and category endpoints are public and read-only — no key required. The AI guide/analyzer endpoints are powered by our server-side key, so callers do not need their own; they return 503 (LLM_UNAVAILABLE) only if that key is momentarily unavailable.

Rate limits: /guide 20/min and /link-check 30/min per client IP. Exceeding them returns 429 (RATE_LIMITED).

Need this data in your product? Get the Cancellation Intelligence dataset