What is Nabz Search

Nabz Search is a new set of endpoints on the platform that let you search the web, scrape pages, discover site URLs, and extract structured data — all through our API. If you're building something that needs web data, this is for you.

The Endpoints

Search

Hit /api/nabzsearch/search with a query and get back structured results. You can also pass scrape: true to pull page content inline with your results — useful when you need more than just titles and URLs.

GET /api/nabzsearch/search?query=your+query&limit=5

Supports geo-targeting, source filtering (web, images, news), and you can cap content size with max_content_length so responses stay small — handy if you're feeding results into an LLM.

Scrape

Give it a URL, get back the page content as markdown, HTML, or other formats. Handles JS-rendered pages too if you set a wait_for delay.

POST /api/nabzsearch/scrape
{"url": "https://example.com", "format": "markdown"}

Map

Discovers all URLs on a site. Point it at a domain, get back a list of pages. Good for crawling prep, SEO analysis, or finding what's on a site before you start scraping.

GET /api/nabzsearch/map?url=https://example.com&limit=100

Extract (AI) — VIP Only

This one's different. You send a prompt describing what data you want, and the AI pulls it out of the page for you. You can also pass a JSON schema so the output is always in the shape you expect.

Two ways to use it:

  • From URLs — give it specific pages to extract from.
  • Web Search mode — set web_search: true and just ask a question. The AI finds sources on its own and gives you a structured answer. No URLs needed.
// Extract from a specific page
POST /api/nabzsearch/extract
{"urls": ["https://example.com"], "prompt": "Get the company name and contact email"}

// Or let it search the web for you
POST /api/nabzsearch/extract
{"web_search": true, "prompt": "What is the current price of Bitcoin?"}

This endpoint requires a VIP plan and counts against your AI quota. The AI side is still in beta — results depend on the page and the prompt. If something doesn't come back right, try being more specific or add a schema.

How It Works Under the Hood

  • Results are cached automatically (search: 5 min, scrape: 10 min, map: 15 min). Extract is not cached since every response is AI-generated.
  • All URLs are validated before processing — localhost, private IPs, and non-HTTP schemes are blocked.
  • Failed requests retry automatically. If the upstream is down, you'll get a clear error instead of hanging.
  • Standard endpoints (search, scrape, map) use your normal plan quota. Extract uses your AI quota separately.

Full Reference

Search Parameters

NameTypeRequiredDescription
querystringYesSearch query (max 500 chars)
limitintegerNoMax results, 1-10 (default: 5)
formatstringNomarkdown, html, rawHtml, links. Auto-enables scraping.
sourcesstringNoweb, images, or news
scrapebooleanNoFetch page content for each result
locationstringNoGeo-targeting (e.g., "Germany")
countrystringNoISO country code (e.g., US, DE)
max_content_lengthintegerNoTruncate scraped content to N characters (100-100k)

Scrape Parameters

NameTypeRequiredDescription
urlstringYesURL to scrape (public only, max 2000 chars)
formatstringNomarkdown (default), html, rawHtml, links, images, screenshot, summary
only_main_contentbooleanNoStrip nav/sidebars, return main content only
wait_forintegerNoWait time in ms for JS pages (0-10000)
countrystringNoISO country code for geo-targeted scraping
max_content_lengthintegerNoTruncate content to N characters (100-100k)

Map Parameters

NameTypeRequiredDescription
urlstringYesWebsite URL to map (public only, max 2000 chars)
limitintegerNoMax URLs to find, 1-500 (default: 100)
searchstringNoFilter results by keyword
include_subdomainsbooleanNoInclude subdomains

Extract Parameters

NameTypeRequiredDescription
urlsarrayConditionalURLs to extract from (max 10). Required unless web_search is true.
promptstringYesWhat to extract (5-2000 chars)
schemaobjectNoJSON schema for structured output
web_searchbooleanNoLet the AI search the web instead of requiring URLs

Example Responses

// Search
{
  "success": true,
  "query": "laravel sanctum",
  "result_count": 2,
  "results": [{
    "url": "https://laravel.com/docs/sanctum",
    "title": "Laravel Sanctum - Laravel Documentation",
    "description": "Laravel Sanctum provides a featherweight authentication system..."
  }]
}

// Extract with web search
{
  "success": true,
  "prompt": "What is the current price of Bitcoin in USD?",
  "results": {
    "price_usd": "$83,721.00",
    "source": "CoinMarketCap"
  }
}

Caching

EndpointTTL
Search5 min
Scrape10 min
Map15 min
ExtractNot cached

Cached responses have "cached": true in the body.

Errors

StatusMeaning
403VIP required (extract only)
422Bad params, blocked URL, or no results
502Upstream search engine error
503Search service not configured

Getting Started

Everything lives under /api/nabzsearch/. Use the same Bearer token you use for every other endpoint on the platform. Full docs with more examples are here.