Web APIzpi.web.id ↗
Search and explore the Zapi public API catalog. List APIs by category or keyword, paginate results, and fetch full endpoint docs with parameter schemas and example responses.
What is the Web API?
The Zapi Catalog API exposes 2 endpoints for discovering and inspecting every service listed on zpi.web.id. list_apis returns paginated summaries — including endpoint counts, total request volume, category slug, and tags — while get_api_details delivers the full technical spec for a single API: its endpoint definitions, parameter schemas, cache TTLs, and example responses.
curl -X GET 'https://api.parse.bot/scraper/229a3f2e-4740-4eee-acd2-1b0ce754643d/list_apis?limit=5&category=finance&q=tiktok&cursor=0' \ -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 zpi-web-id-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.
"""Walkthrough: Zapi SDK — browse the public API catalog, drill into details."""
from parse_apis.zpi_web_id_api import Zapi, ApiNotFound
client = Zapi()
# Search for finance-related APIs, capped at 5 total items.
for api_summary in client.api_summaries.list(category="finance", limit=5):
print(api_summary.display_name, f"({api_summary.endpoint_count} endpoints)")
# Drill down: take the first result and navigate to full details.
hit = client.api_summaries.list(q="tiktok", limit=1).first()
if hit is not None:
detail = hit.details()
print(detail.display_name, detail.description)
for ep in detail.endpoints:
print(f" {ep.method} /{ep.slug} — {ep.description}")
# Direct point lookup by slug discovered from the previous search.
if hit is not None:
try:
api = client.apis.get(slug=hit.slug)
print(api.display_name, "enabled:", api.enabled, "tags:", api.tags)
except ApiNotFound:
print("API no longer available")
print("exercised: api_summaries.list / details / apis.get")
List and search available APIs in the Zapi catalog. Supports keyword search, category filtering, and cursor-based pagination. Returns API summaries ordered by popularity. Each page returns up to `limit` items; pass `next_cursor` from the response as `cursor` to fetch the next page. When `next_cursor` is null, there are no more pages.
| Param | Type | Description |
|---|---|---|
| q | string | Keyword search query to filter APIs by name or tags (e.g. 'tiktok', 'finance'). |
| limit | integer | Maximum number of items to return per page. |
| cursor | string | Pagination cursor from a previous response's next_cursor field. Omit for the first page. |
| category | string | Category slug to filter APIs (e.g. 'finance', 'social-media', 'autocomplete'). Omitting returns all categories. |
{
"type": "object",
"fields": {
"items": "array of API summary objects with id, slug, category, displayName, description, tags, iconUrl, endpointCount, totalRequests, maxCacheTtl, minPlan, hasBulk, hasGatedEndpoint",
"total": "integer total number of APIs matching the query/filter",
"next_cursor": "string pagination cursor for the next page, or null if no more pages"
},
"sample": {
"data": {
"items": [
{
"id": "01KZ0SAQC0ZDX8TGV7PSA2FVDM",
"slug": "tiktok",
"tags": [
"tiktok",
"social",
"trends",
"suggest"
],
"hasBulk": false,
"iconUrl": "https://imgproxy.zpi.web.id/7812YMqDXk0fWoFTYEWQhX5rvgvJXISEOPsF5d8t9BU/rs:fit:128:128:0/q:85/f:webp/aHR0cHM6Ly9zMy56cGkud2ViLmlkL21haW4vc2NyYXBlcnMvdGlrdG9rLTE3ODU2NTkyMTk4MDAucG5n.webp",
"minPlan": null,
"category": "autocomplete",
"description": "TikTok search suggestions — video-culture vocabulary the search engines do not surface.",
"displayName": "TikTok Autocomplete",
"maxCacheTtl": 1800,
"endpointCount": 2,
"totalRequests": 301,
"hasGatedEndpoint": false
},
{
"id": "01KS2Y5M6DCDF0J49QPEBSZ6SR",
"slug": "tiktok-scraper",
"tags": [
"social",
"tiktok",
"scraper"
],
"hasBulk": true,
"iconUrl": "https://imgproxy.zpi.web.id/5uuEiByUONpB9lcyebpMXGzw-18ETLEcgEpbhJ_d3OE/rs:fit:128:128:0/q:85/f:webp/aHR0cHM6Ly9zMy56cGkud2ViLmlkL21haW4vc2NyYXBlcnMvdGlrdG9rLXNjcmFwZXItMTc3OTI4ODk1MzgzOC5zdmc.webp",
"minPlan": null,
"category": "social-media",
"description": "Dapatkan data profile, postingan, comment, dan lainnya dengan lengkap dan konsisten.",
"displayName": "TikTok Scraper",
"maxCacheTtl": 3600,
"endpointCount": 13,
"totalRequests": 26207,
"hasGatedEndpoint": false
}
],
"total": 2,
"next_cursor": null
},
"status": "success"
}
}About the Web API
Browsing and Searching the Catalog
list_apis accepts four optional query parameters: q for keyword search against API names and tags, category for filtering by a category slug such as finance or social-media, limit to control page size, and cursor for cursor-based pagination. Each response includes an items array of summary objects, a total integer reflecting the matched count, and a next_cursor string you pass back as cursor to advance to the next page. Summary objects carry fields like id, slug, displayName, description, tags, iconUrl, endpointCount, and totalRequests.
Fetching Full API Documentation
get_api_details takes a single required parameter, slug, obtained from any list_apis result. The response contains the complete record for that API: enabled status, min_plan requirement, category, icon_url, and an endpoints array. Each endpoint object includes id, slug, display_name, description, method, params_schema (the full parameter specification), cache_ttl, and example_response. The top-level updated_at ISO 8601 timestamp tells you when the API record was last modified.
Practical Notes
Pagination is cursor-based, not offset-based. When next_cursor is null, you have reached the last page. The min_plan field on a detail record is null for freely accessible APIs and contains a plan identifier string for gated ones. The endpointCount and totalRequests fields on list summaries are useful proxies for API maturity and adoption before you invest time reviewing full documentation.
The Web API is a managed, monitored endpoint for zpi.web.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zpi.web.id 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 zpi.web.id 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?+
- Build a catalog browser UI that lets developers filter Zapi APIs by category slug and keyword
- Programmatically index all API slugs and their endpointCount to surface the most feature-rich options
- Audit which APIs require a paid min_plan before including them in an integration shortlist
- Sync API metadata — displayName, description, tags — into an internal knowledge base or wiki
- Retrieve params_schema and example_response for any API to auto-generate client SDK stubs
- Track totalRequests over time to monitor which APIs in the catalog gain or lose popularity
- Validate that a specific API slug is enabled before routing traffic to it in a production workflow
| 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 zpi.web.id offer an official developer API?+
What does get_api_details return beyond what list_apis already shows?+
list_apis returns lightweight summaries: slug, displayName, description, tags, iconUrl, endpointCount, and totalRequests. get_api_details adds the full endpoints array with each endpoint's params_schema, cache_ttl, method, and example_response — the data you need to actually call or evaluate an individual API.How does pagination work in list_apis?+
next_cursor string when more pages exist; pass it as the cursor parameter in the next request. When next_cursor is null, you are on the last page. There is no offset or page-number parameter.