API reference
The Startup Opportunities API returns structured JSON for grants, competitions and events. Every endpoint is bearer-authenticated and paginates with an opaque cursor.
Authentication
Every request carries a bearer token in the Authorization header. Keys look like sgi_live_…. A missing key returns 401; a valid key without the required dataset scope returns 403.
curl -H "Authorization: Bearer sgi_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
"https://www.startupgrantsindia.com/api/public/v1/grants?limit=5"Don’t have a key? .
Base URL & versioning
Every endpoint lives under this base URL. Breaking changes ship as a new version prefix (e.g. /v2); the current version stays available for at least six months after a new one lands.
https://www.startupgrantsindia.com/api/public/v1
Pagination
List endpoints paginate with an opaque cursor. Each response has a next_cursor field; pass it back as ?cursor=… to fetch the next page. When the field is null, you’ve reached the end.
{
"data": [ /* up to `limit` items */ ],
"next_cursor": "MTIz" // null when there are no more pages
}Max limit is 50, default 20. Cursors are stable within a version — safe to store and resume from later.
Grants
Scopegrants:read · ~2,300 programsTime-bound government schemes, incubator cohorts, accelerator batches, CSR programs and rolling grants across India — with deadlines, funding ranges, eligibility summaries, application URLs and program-published documents.
/api/public/v1/grantsList (paginated)/api/public/v1/grants/{slug}Detail/api/public/v1/grants/facetsFacet countsQuery parameters
| Param | Type | Description |
|---|---|---|
limite.g. 20 | int (1–50) | Page size. Defaults to 20. |
cursor | string | Opaque token from the previous response's next_cursor. Omit for the first page. |
qe.g. climate | string | Free-text search over title, summary, organizer and location. |
statuse.g. active | enum | One of active | closed | upcoming | inactive. Defaults to active. |
funding_typee.g. grant,fellowship | CSV | grant | fellowship | equity | debt | subsidy | competition. Multiple values OR-matched. |
program_format | string | Exact match on the program format (e.g. accelerator). |
badge | string | Exact match on the cohort badge (e.g. flagship, women, dpiit-only). |
support_typee.g. mentorship,workspace | CSV | Overlap filter on the support_type array. Row matches if it lists ANY of the values. |
offeringse.g. cash,mentorship | CSV | Overlap filter on offerings (cash, mentorship, lab access, …). |
tagse.g. climate,agritech | CSV | Overlap filter on tags. |
amount_mine.g. 500000 | int (INR) | Keep grants whose maximum award is at least this much. |
amount_maxe.g. 5000000 | int (INR) | Keep grants whose minimum ask fits under this budget ceiling. |
deadline_beforee.g. 2026-12-31 | ISO date | Grants whose deadline is on or before this date. |
deadline_aftere.g. 2026-08-01 | ISO date | Grants whose deadline is on or after this date. |
is_rolling | bool | true to keep only rolling programs, false to exclude them. |
is_competition | bool | — |
is_equity_free | bool | — |
is_repayable | bool | — |
is_bootstrapped_friendly | bool | — |
is_csr_funded | bool | — |
is_international | bool | — |
source | string | ilike match on the source name. |
Sample response
{
"data": [
{
"id": 481,
"slug": "startup-india-seed-fund-scheme",
"title": "Startup India Seed Fund Scheme (SISFS)",
"organizer": "DPIIT, Government of India",
"short_description": "Up to ₹50 lakh grant + convertible debenture for DPIIT-registered startups via approved incubators.",
"funding_type": "grant",
"is_competition": false,
"amount_min_inr": 500000,
"amount_max_inr": 5000000,
"status": "active",
"deadline": null,
"is_rolling": true,
"apply_url": "https://seedfund.startupindia.gov.in/",
"tags": ["dpiit", "seed", "flagship"],
"url": "https://www.startupgrantsindia.com/startup-india-seed-fund-scheme"
}
],
"next_cursor": "NDgx"
}Fields returned
- title, slug, short_description, description
- funding_type, is_competition, program_format, support_type, offerings
- amount_min_inr, amount_max_inr, application_fee_inr, stipend_monthly_inr
- status, deadline, is_rolling, cycle_opens_at
- eligibility_summary, funding_benefits, application_stages, faq (detail only)
- apply_url, apply_email, contact_name, contact_phone
- program_documents (labels + download URLs)
- source, source_url
Competitions
Scopecompetitions:read · ~100 activeStartup competitions and hackathons with cash prizes — registration deadlines, event dates, prize pool, team-size limits, themes and application links.
/api/public/v1/competitionsList (paginated)/api/public/v1/competitions/{slug}Detail/api/public/v1/competitions/facetsFacet countsQuery parameters
| Param | Type | Description |
|---|---|---|
limite.g. 20 | int (1–50) | Page size. Defaults to 20. |
cursor | string | Opaque token from the previous response's next_cursor. Omit for the first page. |
qe.g. climate | string | Free-text search over title, summary, organizer and location. |
typee.g. hackathon,pitch | CSV | Competition type (hackathon, pitch, business-plan, …). Multiple OR-matched. |
organizer | string | ilike match on the organizer name. |
locatione.g. Bengaluru | string | ilike match on the location string. |
is_online | bool | true to keep only online competitions, false for on-site only. |
prize_min_inre.g. 100000 | int (INR) | Keep competitions with a prize pool at least this large. |
prize_max_inr | int (INR) | Keep competitions with a prize pool at most this large. |
deadline_before | ISO date | registration_deadline on or before this date. |
deadline_after | ISO date | registration_deadline on or after this date. |
event_start_before | ISO date | event_start_date on or before this date. |
event_start_after | ISO date | event_start_date on or after this date. |
team_size_maxe.g. 4 | int | 'I have a team of up to N' — keeps competitions whose lower team-size bound fits under this ceiling. |
tags | CSV | Overlap filter on tags. |
themese.g. climate,healthtech | CSV | Overlap filter on themes. |
Sample response
{
"data": [
{
"id": 128,
"slug": "smart-india-hackathon-2026",
"title": "Smart India Hackathon 2026",
"type": "hackathon",
"organizer": "AICTE, MoE",
"location": "Pan-India",
"is_online": false,
"prize_pool": "₹1 crore total",
"prize_pool_inr": 10000000,
"registration_deadline": "2026-09-15",
"event_start_date": "2026-12-05",
"team_size_min": 6,
"team_size_max": 6,
"application_url": "https://sih.gov.in/",
"url": "https://www.startupgrantsindia.com/competitions/smart-india-hackathon-2026"
}
],
"next_cursor": "MTI4"
}Fields returned
- title, slug, short_description, description, eligibility
- type, organizer, organizer_url, location, is_online
- prize_pool, prize_pool_inr
- registration_deadline, event_start_date, event_end_date
- tags, themes, team_size_min, team_size_max, participant_count
- application_url, source, source_url
Events
Scopeevents:read · Continuously updatedUpcoming startup events across India — meetups, demo days, founder retreats, investor conferences. With dates, deadlines, organizer, location, category and price.
/api/public/v1/eventsList (paginated)/api/public/v1/events/{slug}Detail/api/public/v1/events/facetsFacet countsQuery parameters
| Param | Type | Description |
|---|---|---|
limite.g. 20 | int (1–50) | Page size. Defaults to 20. |
cursor | string | Opaque token from the previous response's next_cursor. Omit for the first page. |
qe.g. climate | string | Free-text search over title, summary, organizer and location. |
frome.g. 2026-09-01 | ISO date | Events with start_date on or after this. Default: now. |
to | ISO date | Events with start_date on or before this. |
categorye.g. meetup | string | ilike match on the event category. |
location | string | ilike match on the location string. |
organizer | string | ilike match on the organizer. |
free | bool | true = keep only free events (price null or 0); false = paid only. |
price_max_inr | int (INR) | Keep events priced at or below this. Free events (null price) always pass. |
has_deadline_within_dayse.g. 7 | int (1–365) | Keep events whose registration deadline is within N days from now. |
tags | CSV | Overlap filter on tags. |
Sample response
{
"data": [
{
"id": "a3f1d0b6-9d0e-4c37-8e2b-1c4a2b5e6f01",
"slug": "founders-meetup-bengaluru-sep-2026",
"title": "Founders Meetup Bengaluru — September",
"start_date": "2026-09-14T18:30:00+05:30",
"category": "meetup",
"location": "Bengaluru",
"organizer": "SGI",
"price_inr": 0,
"tags": ["community", "meetup"],
"url": "https://www.startupgrantsindia.com/events/founders-meetup-bengaluru-sep-2026"
}
],
"next_cursor": null
}Fields returned
- title, slug, description
- start_date, end_date, deadline
- category, location, organizer
- price_inr, capacity, image_url, tags
Rate limits & errors
Every key defaults to 60 requests / minute(raiseable per customer). On overrun the API returns 429 with Retry-After and X-RateLimit-* headers.
| Status | Meaning |
|---|---|
| 400 | Invalid query parameter or cursor. |
| 401 | Missing or malformed Authorization header, or unknown key. |
| 403 | Key does not carry the required dataset scope. |
| 404 | Unknown slug on a detail endpoint. |
| 429 | Rate limit exceeded. Wait Retry-After seconds. |
| 500 | Internal error — please retry, then contact us if it persists. |
Something missing from the docs? and we’ll add it.