Docs

Nebulix Web API

Nebulix gives your code and AI agents two building blocks for working with the live web: search to find pages, and extract to turn any public page into clean, structured JSON.

Base URL:

Quickstart

  1. Create a free account — you get 1,000 credits every month.
  2. Copy your API key from the dashboard. It starts with nbx_live_.
  3. Make your first request:

Authentication

Every request to /v1/* needs your API key in the Authorization header:

Authorization: Bearer nbx_live_xxxxxxxxxxxxxxxxxxxxxxxx
Keep keys secret. Call the API from your server, never from browser code. If a key leaks, revoke it from API keys and create a new one.

POST /v1/extract

Fetches a public URL and returns structured data: title, meta tags, headings, links, images, readable text and — when the page has them — product and article details from JSON-LD. Costs 2 credits.

Body parameters

NameTypeDescription
urlstringRequired. A public http(s) URL. https:// is added if missing.
include_textbooleanInclude up to 5,000 characters of readable page text. Default true.

Example

Response

{
  "url": "https://example.com/",
  "status": 200,
  "title": "Example Domain",
  "description": null,
  "language": "en",
  "product": null,
  "article": null,
  "headings": [{ "level": 1, "text": "Example Domain" }],
  "links": { "internal": 0, "external": 1, "items": [ … ] },
  "images": [],
  "wordCount": 27,
  "text": "Example Domain This domain is for use in …",
  "ms": 346,
  "credits_used": 2
}
Nebulix respects robots.txt and identifies itself as NebulixBot. Pages that disallow automated access return 403 blocked_by_robots. Private, local and internal addresses are always blocked.

Errors

Errors use standard HTTP status codes and a consistent JSON body:

{ "error": { "code": "out_of_credits", "message": "You've used all 1,000 credits for this month." } }
StatusCodeMeaning
400missing_query · invalid_url · blocked_targetSomething is wrong with the request.
401invalid_api_keyKey missing, wrong or revoked.
402out_of_creditsMonthly credits used up.
403blocked_by_robotsThe site's robots.txt disallows this page.
429rate_limitedToo many requests. Wait for Retry-After seconds.
502 / 504target_error · fetch_failedThe target site failed or timed out. Not charged.

Credits & limits

  • /v1/search = 1 credit, /v1/extract = 2 credits. Failed requests are free.
  • Credits reset on the 1st of each month.
  • Rate limits per account: Free 30/min, Starter 120/min, Pro 600/min.
  • Extraction reads at most 3 MB per page and times out after 12 seconds.

See Pricing for plan details.

Agents & tools

Both endpoints are plain JSON over HTTPS, so they plug straight into any agent framework as tools. Describe them to your model like this:

[
  { "name": "web_search", "description": "Search the live web. Returns ranked results.",
    "input_schema": { "type": "object", "properties": { "q": { "type": "string" }, "geo": { "type": "string" } }, "required": ["q"] } },
  { "name": "web_extract", "description": "Fetch a URL and return structured page data.",
    "input_schema": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] } }
]

A hosted MCP server is on the roadmap.