Ketto APIketto.org ↗
Access Ketto.org fundraiser data: trending campaigns, search, full campaign details, updates, comments, and platform statistics via a structured REST API.
What is the Ketto API?
The Ketto.org API exposes 7 endpoints covering fundraiser discovery, search, and detail retrieval from India's crowdfunding platform. You can call get_trending_fundraisers to pull currently promoted campaigns with raised amounts and campaigner details, run full-text searches via search_fundraisers, and fetch granular campaign data—including gallery, cause description, and reward tiers—through get_fundraiser_detail. Platform-wide stats like monthly donor counts and total contributions are available from a single stats endpoint.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/fe42df52-10de-4ea5-ade0-d4982fd50980/get_trending_fundraisers' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace ketto-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Ketto crowdfunding platform: discover campaigns, drill into details and comments."""
from parse_apis.ketto_fundraiser_api import Ketto, Category, FundraiserNotFound
client = Ketto()
# Platform-wide stats — single object, no pagination.
stats = client.platformstatses.get()
print(f"Platform: {stats.monthly_donors:,} monthly donors, {stats.campaigns:,} campaigns")
# Browse medical fundraisers with the Category enum.
for fundraiser in client.fundraisers.browse(category=Category.MEDICAL, limit=3):
print(f"[Medical] {fundraiser.title} — raised {fundraiser.raised.raised} ({fundraiser.raised.backers} backers)")
# Search by keyword, take the first hit, then drill into sub-resources.
top = client.fundraisers.search(query="heart surgery", limit=1).first()
if top:
for comment in top.comments.list(limit=2):
print(f" Comment by {comment.entity.full_name}: {comment.text[:60]}")
for update in top.updates.list(limit=2):
print(f" Update: {update.update_title} ({update.creation_time})")
# Trending campaigns — a separate lightweight resource.
for tf in client.trendingfundraisers.list(limit=3):
print(f"Trending: {tf.title} by {tf.campaigner.full_name}")
# Typed error handling: construct a fundraiser by slug and access sub-resources.
try:
bad = client.fundraiser("nonexistent-campaign-slug-000000")
bad.updates.list(limit=1).first()
except FundraiserNotFound as exc:
print(f"Expected error: {exc}")
print("Done: platformstatses.get / fundraisers.browse / fundraisers.search / comments.list / updates.list / trendingfundraisers.list / fundraiser()")
Retrieve currently trending fundraisers from Ketto. Returns a paginated list of campaigns marked as trending, each with basic campaign info, amount requested, raised totals, campaigner details, and cause category. Results are ordered by platform priority.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer total number of trending fundraisers",
"per_page": "integer results per page",
"fundraisers": "array of trending fundraiser objects including id, title, custom_tag, amount_requested, raised, campaigner, cause, and widget",
"current_page": "integer current page number"
},
"sample": {
"data": {
"total": 90,
"per_page": 15,
"fundraisers": [
{
"id": 999855,
"cause": {
"id": 59,
"info_1": "Medical"
},
"title": "Help Us Bring Home Our Premature Newborn Twins!",
"raised": {
"raised": 59411.03,
"backers": 3042,
"campaign_id": 999855
},
"campaigner": {
"id": 8525769,
"full_name": "Anurag Srivastava"
},
"custom_tag": "my-baby-twins-battle-for-their-life-and-we-need-your-support-to-save-them-999855",
"amount_requested": 63157
}
],
"current_page": 1
},
"status": "success"
}
}About the Ketto API
Browsing and Searching Fundraisers
The browse_fundraisers endpoint queries the full fundraiser index with optional limit, offset, and category pagination parameters. Category values include Medical, Education, Animals, Children, and Community Development. Each result object in the hits array includes title, custom_tag (used as the slug for detail lookups), id, raised, campaigner, category, and a widget object for embed-ready display. The response also includes a facetDistribution object with category, tag, and address breakdowns, and an estimatedTotalHits integer for building pagination UI.
The search_fundraisers endpoint accepts a required query string and returns the same hit shape as browse, with the addition of _formatted versions of text fields containing highlighted match snippets. Both endpoints share the same facet and pagination response structure.
Campaign Detail and Activity
Passing a slug (the custom_tag field from any list result) to get_fundraiser_detail returns the full campaign object: id, title, amount_requested, a gallery array, a basicinfo block, campaigner metadata, cause text, settings, and raised statistics. The same slug is accepted by get_fundraiser_updates and get_fundraiser_comments to retrieve post-campaign activity. Updates include update_title, update_text, creation_time, and owner info. Comments return text, creation_date, the commenter's entity object, and nested replies. Not all fundraisers have updates or comments; both endpoints return an empty data array when none exist.
Platform Statistics and Trending Data
get_homepage_stats returns four platform-level counters: monthlyDonors, contribution, lives_saved, and campaigns. get_trending_fundraisers pulls the homepage-promoted campaign list with id, title, custom_tag, and amount_r (raised amount) fields, paginated via current_page, total, and per_page fields in the response envelope.
The Ketto API is a managed, monitored endpoint for ketto.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ketto.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ketto.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate trending medical and education fundraisers in India to surface urgent campaigns by raised amount.
- Build a campaign search tool using
search_fundraiserswith keyword queries and category facets. - Track fundraiser progress over time by polling
get_fundraiser_detailfor updatedraisedstatistics. - Display recent campaigner updates and donor comments alongside campaign detail pages using the updates and comments endpoints.
- Compile category-level distribution data from
facetDistributionin browse results for NGO sector analysis. - Monitor platform growth using
get_homepage_statsto track changes inmonthlyDonorsand totalcampaignscounts. - Resolve a list of campaign slugs from search results into full detail objects for data enrichment pipelines.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Ketto have an official public developer API?+
How do I look up a specific fundraiser by name?+
search_fundraisers accepts a required query string and returns a hits array of matching campaigns. Each hit includes the custom_tag field, which is the slug you pass to get_fundraiser_detail, get_fundraiser_updates, and get_fundraiser_comments for full campaign data.Does the API expose donor identities or individual donation amounts?+
raised figures and platform-wide counters like monthlyDonors and contribution. If individual donor data is important to your use case, you can fork this API on Parse and revise it to add an endpoint targeting that data if it becomes publicly accessible on the platform.Is there support for filtering fundraisers by location or tags beyond category?+
browse_fundraisers endpoint includes an address facet inside facetDistribution, but the current endpoint does not accept a location filter parameter—only category, limit, and offset. Tag and address facet counts are returned in the response for reference. You can fork this API on Parse and revise it to add address or tag filter parameters to the browse endpoint.