Developer API

Govt Scheme Eligibility API

A free, deterministic API for matching an Indian citizen's profile against curated central + state schemes. No API key. No signup. CORS-enabled.

Three curls

# Match — POST profile
curl -X POST 'https://schemes.krakelabsindia.com/api/match' \
  -H 'content-type: application/json' \
  -d '{"age":32,"state":"MH","gender":"female","annualIncome":250000,"isFarmer":false,"isStudent":false,"isBPL":false}'

# Match — GET (curl-friendly)
curl 'https://schemes.krakelabsindia.com/api/match?age=32&state=MH&gender=female&annualIncome=250000'

# Browse the dataset
curl 'https://schemes.krakelabsindia.com/api/schemes?sector=education&state=MH&page=1&limit=20'

# Dataset metadata
curl 'https://schemes.krakelabsindia.com/api/meta'

Endpoints

MethodPathWhat it does
POST/api/matchProfile → eligible schemes (recommended).
GET/api/match?...Same matcher, query-string variant for quick testing.
GET/api/schemesPaginated list of all schemes; filterable by sector, state, keyword.
GET/api/metaDataset counts + snapshot date.
GET/openapi.jsonFull OpenAPI 3.1 spec.

Profile shape

interface Profile {
  age: number;                  // 0-120
  state: string;                // 2-letter code, e.g. "MH", "TN", "DL"
  gender: "male"|"female"|"other";
  annualIncome: number;         // INR per year
  isFarmer: boolean;
  isStudent: boolean;
  isBPL: boolean;
  hasBankAccount: boolean;
  occupation:
    | "farmer" | "student" | "working"
    | "self-employed" | "retired" | "unemployed" | "any";
  category: "GEN"|"OBC"|"SC"|"ST"|"MINORITY"|"ANY";
  areaType: "urban"|"rural"|"any";
}

Honest fine print

Filter-based, not AI-powered.We hard-code a curated set of eligibility predicates per scheme. There's no LLM call, no live MyScheme fetch, no third-party data.

Use as a starting filter only.The official portal has the final word. We can't see your Aadhaar, ration card, income certificate, caste certificate or land record — the scheme authority does.

No SLA. Best-effort free service on Cloudflare Workers. Cache aggressively (responses set Cache-Control: public, max-age=3600).

OpenAPI 3.1 spec

GET /openapi.json