Kitabisa APIkitabisa.com ↗
Access Kitabisa campaign listings, donor data, fundraiser profiles, categories, and search via a structured JSON API. 8 endpoints covering Indonesia's largest crowdfunding platform.
What is the Kitabisa API?
The Kitabisa API provides structured access to 8 endpoints covering Indonesia's largest crowdfunding platform, including campaign listings, donor records, fundraiser profiles, and keyword search. The get_campaign_detail endpoint returns the full campaign object — HTML description, donation totals, donor count, campaigner info, and campaign status — while get_campaign_donors exposes individual donation records with amount, timestamp, and anonymity flag.
curl -X GET 'https://api.parse.bot/scraper/cd131fa0-0793-4134-b338-fa4ef93229b0/list_campaigns?sort=urgency&limit=5&offset=0&category_id=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch one page of fundraising campaigns, optionally restricted to a category and ordered by a site sort. One request per call. Pagination is caller-driven via offset/limit: offset defaults to 0 and limit to 20; omitting both returns the first 20. Each item is a campaign summary (id, title, short_url, campaigner, donation_target, donation_received, category_name, campaign_type, days_remaining, launched, expired, image, and more). The sort codes are the site's own: 'latest' (newest first), 'urgency' (most urgent, the site default) and 'relevancy'; 'terbaru' is accepted as an alias of 'latest'. campaign_type is not a site-side filter: it is applied to the fetched page, so a page can legitimately come back with fewer items than limit, or empty, while later offsets still hold matching campaigns. An unrecognized campaign_type is rejected before any request.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for campaigns. Omitted means the site's default ordering. |
| limit | integer | Number of campaigns to return per page. |
| offset | integer | Offset for pagination. |
| category_id | integer | Filter by category ID. Category IDs can be obtained from get_categories endpoint. |
| campaign_type | string | Keep only campaigns of this type within the fetched page (regular or pool_of_fund); the page is not refilled, so results can be fewer than limit. |
{
"type": "object",
"fields": {
"items": "array of campaign summary objects with id, title, short_url, campaigner, donation_target, donation_received, category_name, campaign_type, days_remaining, and more"
},
"sample": {
"data": {
"items": [
{
"id": 729945,
"title": "KRISIS IKLIM! Ikut Jaga Bumi Sekarang!",
"short_url": "generasijagabumi",
"campaigner": "CollabForChange",
"campaign_type": "pool_of_fund",
"category_name": "Lingkungan",
"days_remaining": 4240,
"campaigner_type": "ORGANIZATION",
"donation_target": 350000000,
"donation_received": 180166246,
"is_forever_running": true,
"donation_percentage": 0.5147607
}
]
},
"status": "success"
}
}About the Kitabisa API
Campaign Discovery and Filtering
The list_campaigns endpoint returns paginated campaign summaries with fields including id, title, short_url, campaigner, donation_target, donation_received, and category_name. You can sort by parameters like terbaru (newest) and filter by category_id obtained from get_categories. The list_campaigns_by_category endpoint accepts a category_slug directly — slugs like bencana-alam, bantuan-medis, or beasiswa-pendidikan — and resolves the ID internally, making it easier to browse thematically without a prior category lookup. Note that campaign_type filtering (e.g. regular, pool_of_fund) is accepted as a parameter but may not be strictly enforced server-side.
Campaign Detail and Updates
get_campaign_detail accepts a slug from the short_url field of any listing and returns the full campaign object: HTML-formatted description, donation_count, donation_target, donation_received, campaigner details, and current campaign status. For ongoing transparency, get_campaign_latest_news accepts a numeric campaign_id and returns update posts with title, HTML content, and a Unix published timestamp — useful for tracking how actively a campaign communicates with donors.
Donors and Fundraiser Profiles
get_campaign_donors returns up to 10 recent verified donations per campaign, each with amount, verified Unix timestamp, is_anonymous flag, and associated user info. The sort parameter accepts verified or latest. To go deeper on a campaign organizer, get_fundraiser_profile takes the secondary_id hash found in campaign detail responses under campaigner.secondary_id and returns the fundraiser's full_name, biography, avatar URL, is_verified status, and active_since timestamp.
Search and Categories
search_campaigns accepts a query string and optional page and per_page parameters. A minimum per_page of 5 is required for results to be returned — lower values yield empty responses. get_categories requires no inputs and returns the complete category list with id, name, slug, and icon URL, which feeds directly into the filtering parameters of both listing endpoints.
The Kitabisa API is a managed, monitored endpoint for kitabisa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kitabisa.com 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 kitabisa.com 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 active disaster-relief campaigns using the
bencana-alamcategory slug and trackdonation_receivedover time. - Monitor donor activity on a specific campaign by polling
get_campaign_donorsand recording new entries byverifiedtimestamp. - Build a campaign search tool that queries
search_campaignsby keyword and surfacesdonation_target,donation_received, andcampaignerfor each result. - Profile fundraiser credibility by combining
get_fundraiser_profilefields (is_verified,active_since,biography) with their active campaign data. - Track campaign transparency by ingesting
get_campaign_latest_newsupdate posts and alerting when no new updates have been published within a threshold period. - Classify and count active campaigns across all categories using
get_categoriesIDs paired with paginatedlist_campaignscalls. - Compare fundraising progress across medical aid campaigns by filtering
list_campaignswith thebantuan-medisslug and comparingdonation_receivedtodonation_target.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Kitabisa have an official developer API?+
What does `get_campaign_donors` actually return, and how many records does it give per call?+
campaign_id. Each record includes amount, a verified Unix timestamp, an is_anonymous flag, and associated user info. The sort parameter accepts verified or latest to change ordering, but the page size is fixed at 10 results.Is there any way to get the total donation history for a campaign, not just the 10 most recent donors?+
get_campaign_donors endpoint returns a fixed page of up to 10 donors and does not support arbitrary pagination through full donation history. The get_campaign_detail endpoint does expose aggregate donation_count and donation_received totals. You can fork this API on Parse and revise it to add a paginated donor history endpoint if deeper history access is needed.Does the API cover Kitabisa Zakat or emergency-specific sub-platforms separately from regular campaigns?+
campaign_type values like regular and pool_of_fund is not currently available as a separate endpoint or filter. You can fork the API on Parse and revise it to add a dedicated endpoint targeting a specific campaign type or sub-platform.Why does `search_campaigns` return empty results even when I pass a valid query?+
per_page parameter must be set to a minimum of 5 for the endpoint to return results. Passing a value below 5 — or omitting it with a default that falls below the threshold — will produce an empty response array even for queries that match active campaigns.