Extract structured data from any webpage with a single API call.
All requests require a Bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Get your API key from Developer Settings.
GET /a/{user_id}/{api_slug}?url={target_url}
| Name | Type | Description |
|---|---|---|
user_id |
path | Your user ID |
api_slug |
path | The API identifier |
url |
query | Target URL to extract data from (URL-encoded) |
fresh |
query |
optional
Set to true
to bypass cache and fetch live data
|
Data extracted successfully. Returns the extracted data with metadata.
Parser is being generated for this domain. Retry after the specified delay.
Check the Retry-After header.
All errors return a consistent format with machine-readable codes.
| Code | Status | Description |
|---|---|---|
missing_api_key |
401 | No API key provided |
invalid_api_key |
401 | API key is invalid |
subscription_required |
402 | No active subscription |
quota_exceeded |
429 | Monthly quota exceeded |
not_found |
404 | API not found |
parse_failed |
422 | Could not extract data |
timeout |
504 | Request timed out |
| Layer | TTL | Description |
|---|---|---|
| Page Content | 10 min | HTML from target URLs |
| Fetch Method | 7 days | HTTP vs browser rendering per domain |
| Parsers | Permanent | Generated extraction code |
fresh=true
to bypass the page cache.
curl -X GET \
"https://kravla.com/a/USER_ID/my-api?url=https://example.com/page" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"title": "Example Product",
"price": 29.99,
"currency": "USD"
},
"url": "https://example.com/product/123",
"api": "product-extractor",
"metadata": {
"api_id": "550e8400-...",
"parser_id": "6ba7b810-...",
"domain": "example.com"
}
}
{
"status": "building",
"message": "Parser is being generated",
"domain": "newsite.com",
"retry_after_seconds": 120
}
{
"error": "quota_exceeded",
"message": "Monthly quota exceeded",
"hint": "Enable metered billing",
"quota": 1000,
"used": 1050
}