Base URL: https://borocode.cloud/api/v1
Every service has its own API key. Create it on the service's API Key page in the dashboard and send it in theAuthorization header: Authorization: Bearer <key>. Keys start with bc_scr_ (Scraper), bc_fe_ (Frontend Hosting) or bc_be_ (Backend Hosting). Keep keys on your server, never in browser code.
Fetch any public page. Send { "url": "https://..." }. Each call counts as one request against your plan.
import requests
res = requests.post(
"https://borocode.cloud/api/v1/scrape",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.com"},
timeout=60,
)
data = res.json()
if res.ok:
print(data["title"], len(data["html"]))
else:
print("Error", res.status_code, data["error"])Response:
{
"url": "https://example.com/",
"status_code": 200,
"title": "Example Domain",
"length": 1256,
"html": "<!doctype html>..."
}Headers X-RateLimit-Limit and X-RateLimit-Remaining show your quota on every response.
Returns your Frontend Hosting plan, resources and expiry. Needs a Frontend Hosting key and an active plan.
import requests
res = requests.get(
"https://borocode.cloud/api/v1/frontend/info",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
data = res.json()
if res.ok:
print(data["plan"], data["resources"], data["active_until"])
else:
print("Error", res.status_code, data["error"])Returns your Backend Hosting plan, CPU, RAM, storage and expiry. Needs a Backend Hosting key and an active plan.
import requests
res = requests.get(
"https://borocode.cloud/api/v1/backend/info",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
data = res.json()
if res.ok:
print(data["plan"], data["resources"], data["active_until"])
else:
print("Error", res.status_code, data["error"])Response:
{
"service": "Backend Hosting",
"plan": "Backend Hosting",
"status": "active",
"active_until": "2026-11-29T10:00:00.000Z",
"resources": { "cpu": "2 vCPU", "ram": "4 GB", "storage": "60 GB NVMe", "bandwidth": "2 TB / mo" },
"features": ["Node.js, Python, Go or any Docker image", "..."]
}Works with any key and doesn't count as a request. Returns the plan, quota, used, remaining and expiry for that key's service.
Errors always come back as JSON: { "error": "message" }.
| Status | Meaning | What to do |
|---|---|---|
| 400 | Bad request | The body is missing or invalid, e.g. no "url". |
| 401 | Unauthorized | No key, a wrong key, or a key you regenerated (old keys stop working). |
| 402 | Payment required | This service has no active plan. Buy or renew it in the dashboard. |
| 403 | Wrong service | The key belongs to a different service (e.g. a Data Extraction key on a hosting endpoint). |
| 429 | Quota used up | You've used this period's requests. Upgrade, or wait for the 30-day reset. |
| 502 / 504 | Upstream problem | The target site failed or timed out. Safe to retry after a few seconds. |
Plans are prepaid for 30 days through Cashfree Payments (UPI, cards, netbanking, wallets) and never renew automatically. Your key gets the new plan within seconds of payment. If your internet drops or you close the tab mid-payment, the payment is still picked up automatically and appears under Billing & credits. Paying twice never loses money: the same plan adds 30 more days, and a different plan converts your leftover days by price.
Create an account to get your keys.