Nabz Search
Search the web, scrape pages, map site URLs, and extract structured data — all through a single unified API.
Results are cached automatically to improve response times for repeated requests.
Search
Search the web and get structured results.
GET /api/nabzsearch/search?query=your+search+query
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | The search query (max 500 characters). |
limit |
integer | No | Maximum results (1-10, default: 5). |
format |
string | No | Content format when scraping results: markdown (default), html, rawHtml, links. Auto-enables scraping. |
sources |
string | No | Source type: web (default), images, or news. |
scrape |
boolean | No | If true, fetches page content for each result (default: false). |
location |
string | No | Geo-targeting location (e.g., "Germany"). |
country |
string | No | Two-letter ISO country code (e.g., US, DE). |
max_content_length |
integer | No | Truncate scraped content to this many characters (100-100,000). Only applies when scrape is enabled. Great for keeping responses small when feeding into LLMs. |
Example Request
curl -X GET "https://developer.nabzclan.vip/api/nabzsearch/search?query=laravel+sanctum&limit=3" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Response
{
"success": true,
"query": "laravel sanctum",
"result_count": 3,
"results": [
{
"url": "https://laravel.com/docs/sanctum",
"title": "Laravel Sanctum - Laravel Documentation",
"description": "Laravel Sanctum provides a featherweight authentication system..."
}
]
}
Scrape
Extract content from a single URL as markdown, HTML, or other formats. Supports JavaScript-rendered pages.
POST /api/nabzsearch/scrape
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | The URL to scrape (max 2000 characters). Must be a public URL (no localhost or private IPs). |
format |
string | No | Output format: markdown (default), html, rawHtml, links, images, screenshot, summary. |
only_main_content |
boolean | No | Strip navigation/sidebars and return only main content (default: false). |
wait_for |
integer | No | Wait time in ms before scraping (0-10000). Useful for JS-rendered pages. |
country |
string | No | Two-letter ISO country code for geo-targeted scraping. |
max_content_length |
integer | No | Truncate content to this many characters (100-100,000). Useful for keeping payloads small. |
Example Request
curl -X POST "https://developer.nabzclan.vip/api/nabzsearch/scrape" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "format": "markdown", "only_main_content": true}'
Response
{
"success": true,
"url": "https://example.com",
"results": {
"markdown": "Example Domain\n==============\n\nThis domain is for use in documentation examples...",
"metadata": {
"title": "Example Domain",
"language": "en",
"statusCode": 200,
"url": "https://example.com"
}
}
}
Map
Discover all URLs on a website. Useful for sitemaps, link analysis, or finding specific pages before scraping.
GET /api/nabzsearch/map?url=https://example.com
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | The website URL to map (max 2000 characters). Must be a public URL. |
limit |
integer | No | Maximum URLs to discover (1-500, default: 100). |
search |
string | No | Filter discovered URLs by search query. |
include_subdomains |
boolean | No | Include subdomains in results (default: false). |
Example Request
curl -X GET "https://developer.nabzclan.vip/api/nabzsearch/map?url=https://example.com&limit=50" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Response
{
"success": true,
"url": "https://example.com",
"result_count": 3,
"results": [
"https://example.com/",
"https://example.com/about",
"https://example.com/contact"
]
}
Extract AI
AI-powered structured data extraction. Two modes:
- From URLs — provide specific URLs and a prompt to extract structured data from those pages.
- Web Search mode — just send a prompt with
web_search: trueand the AI will search the web, find relevant sources, and return a structured answer. No URLs needed. Ask a question, get structured data back.
Note: This endpoint requires a VIP plan and uses your AI request quota.
POST /api/nabzsearch/extract
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
urls |
array | Conditional | Array of URLs to extract data from (max 10). Required unless web_search is true. |
prompt |
string | Yes | Natural language description of what data to extract (min 5, max 2000 characters). |
schema |
object | No | JSON schema for structured output. Improves accuracy and guarantees output shape. |
web_search |
boolean | No | If true, the AI searches the web to answer your prompt. URLs become optional. (default: false). |
Example: Extract from URLs
curl -X POST "https://developer.nabzclan.vip/api/nabzsearch/extract" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com"],
"prompt": "Extract the page title and main description",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"description": {"type": "string"}
}
}
}'
Example: Web Search mode
No URLs — just ask a question and get structured data back from the web.
curl -X POST "https://developer.nabzclan.vip/api/nabzsearch/extract" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"web_search": true,
"prompt": "What is the current price of Bitcoin in USD?",
"schema": {
"type": "object",
"properties": {
"price_usd": {"type": "string"},
"source": {"type": "string"},
"timestamp": {"type": "string"}
}
}
}'
Response
{
"success": true,
"prompt": "What is the current price of Bitcoin in USD?",
"results": {
"price_usd": "$83,721.00",
"source": "CoinMarketCap",
"timestamp": "2026-04-05"
}
}
Use Cases
AI Agents & Tool Use
Give your AI agent access to the web. Use search as a tool so the agent can look things up in real time, scrape to read full page content, and extract to pull structured data from any site.
# Example: AI agent tool that searches the web
import requests
def web_search(query):
r = requests.get("https://developer.nabzclan.vip/api/nabzsearch/search",
headers={"Authorization": "Bearer YOUR_TOKEN"},
params={"query": query, "limit": 5, "scrape": True})
return r.json()["results"]
Web Scraping Pipelines
Scrape pages at scale in your Python or Node scripts. Use map to discover all pages on a site first, then scrape each one.
# Map a site, then scrape every page
import requests
API = "https://developer.nabzclan.vip/api/nabzsearch"
HEADERS = {"Authorization": "Bearer YOUR_TOKEN"}
# Step 1: Discover all pages
pages = requests.get(f"{API}/map", headers=HEADERS,
params={"url": "https://example.com", "limit": 50}).json()["results"]
# Step 2: Scrape each page
for url in pages:
content = requests.post(f"{API}/scrape", headers=HEADERS,
json={"url": url, "format": "markdown", "only_main_content": True}).json()
print(content["results"]["markdown"])
Lead Generation & Data Collection
Extract structured data from company websites, job boards, product pages, or directories. Use a JSON schema to get consistent output every time.
curl -X POST "https://developer.nabzclan.vip/api/nabzsearch/extract" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/about"],
"prompt": "Extract the company name, email, and phone number",
"schema": {
"type": "object",
"properties": {
"company": {"type": "string"},
"email": {"type": "string"},
"phone": {"type": "string"}
}
}
}'
SEO & Competitor Research
Map competitor sites to see their full page structure, scrape their content to analyze keywords, or search for how they rank on specific queries.
Monitoring & Alerts
Run periodic searches or scrapes from a cron job to track price changes, new content, or keyword rankings. The caching keeps things efficient when polling frequently.
RAG (Retrieval-Augmented Generation)
Feed real-time web content into your LLM. Search for relevant pages, scrape them as markdown, and pass the content as context to your model for up-to-date answers.
Caching
Search, scrape, and map results are cached automatically. Cached responses include "cached": true in the response body. Cache durations:
| Endpoint | Cache Duration |
|---|---|
| Search | 5 minutes |
| Scrape | 10 minutes |
| Map | 15 minutes |
| Extract | Not cached (AI-generated) |
Error Responses
| Status | Description |
|---|---|
422 |
Invalid parameters, blocked URL, or no results. |
502 |
Search engine unavailable or returned an error. |
503 |
Search service is not configured on the server. |
Notes
URLs must be publicly accessible (http or https). Internal and private network addresses are blocked.