Skip to main content
POST
https://api.whizo.ai
/
v1
/
search
Search API
curl --request POST \
  --url https://api.whizo.ai/v1/search \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "query": "<string>",
  "limit": 123,
  "country": "<string>",
  "language": "<string>",
  "provider": "<string>",
  "scrapeResults": true,
  "scrapeOptions": {
    "scrapeOptions.format": "<string>",
    "scrapeOptions.includeScreenshot": true,
    "scrapeOptions.mobile": true,
    "scrapeOptions.extractionSchema": {},
    "scrapeOptions.maxAge": 123
  }
}
'
{
  "success": true,
  "data": {
    "query": "best web scraping tools 2025",
    "results": [
      {
        "position": 1,
        "title": "Top 10 Web Scraping Tools in 2025",
        "link": "https://example.com/scraping-tools",
        "snippet": "Comprehensive guide to the best web scraping tools available in 2025...",
        "displayLink": "example.com"
      },
      {
        "position": 2,
        "title": "Web Scraping Tools Comparison",
        "link": "https://another-site.com/comparison",
        "snippet": "Compare features, pricing, and capabilities of top web scraping platforms...",
        "displayLink": "another-site.com"
      }
    ],
    "totalResults": 45600,
    "searchTime": 0.42,
    "creditsUsed": 1
  }
}
The Search API combines web search functionality with content scraping capabilities. Search for any query and optionally scrape the full content from each search result in a single API call.

Authentication

Authorization
string
required
Bearer token using your API key: Bearer YOUR_API_KEY

Request Body

query
string
required
The search query string (1-500 characters)
limit
number
default:"10"
Maximum number of search results to return (1-20)
country
string
ISO country code for localized search results (e.g., “US”, “GB”, “JP”)
language
string
Language code for search results (e.g., “en”, “es”, “fr”)
provider
string
Search provider to use:
  • google - Google Search (default)
  • ollama - Alternative search provider
scrapeResults
boolean
default:"false"
Whether to scrape full content from each search result (+1 credit per result)
scrapeOptions
object
Configuration for scraping search results (only applies if scrapeResults=true)

Response

success
boolean
Indicates if the request was successful
data
object

Examples

Basic Search (No Scraping)

curl -X POST "https://api.whizo.ai/v1/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "best web scraping tools 2025",
    "limit": 10,
    "country": "US"
  }'
{
  "success": true,
  "data": {
    "query": "best web scraping tools 2025",
    "results": [
      {
        "position": 1,
        "title": "Top 10 Web Scraping Tools in 2025",
        "link": "https://example.com/scraping-tools",
        "snippet": "Comprehensive guide to the best web scraping tools available in 2025...",
        "displayLink": "example.com"
      },
      {
        "position": 2,
        "title": "Web Scraping Tools Comparison",
        "link": "https://another-site.com/comparison",
        "snippet": "Compare features, pricing, and capabilities of top web scraping platforms...",
        "displayLink": "another-site.com"
      }
    ],
    "totalResults": 45600,
    "searchTime": 0.42,
    "creditsUsed": 1
  }
}

Search with Content Scraping

curl -X POST "https://api.whizo.ai/v1/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "web scraping best practices",
    "limit": 5,
    "scrapeResults": true,
    "scrapeOptions": {
      "format": "markdown",
      "includeScreenshot": false,
      "maxAge": 7
    }
  }'
{
  "success": true,
  "data": {
    "query": "web scraping best practices",
    "results": [
      {
        "position": 1,
        "title": "Web Scraping Best Practices Guide",
        "url": "https://example.com/best-practices",
        "description": "Learn the essential best practices for ethical and effective web scraping...",
        "displayLink": "example.com",
        "markdown": "# Web Scraping Best Practices\n\n## Introduction\nWeb scraping is a powerful technique for extracting data from websites. However, it must be done responsibly to respect website resources and legal boundaries.\n\n## Key Principles\n\n1. **Respect robots.txt** - Always check and follow robots.txt directives\n2. **Use rate limiting** - Avoid overwhelming servers with too many requests\n3. **Identify yourself** - Use descriptive user agents\n4. **Handle errors gracefully** - Implement retry logic with exponential backoff\n5. **Cache responses** - Minimize duplicate requests\n\n## Technical Implementation\n\nWhen implementing web scrapers, consider...",
        "content": "# Web Scraping Best Practices\n\n## Introduction\nWeb scraping is a powerful technique for extracting data from websites. However, it must be done responsibly to respect website resources and legal boundaries.\n\n## Key Principles\n\n1. **Respect robots.txt** - Always check and follow robots.txt directives\n2. **Use rate limiting** - Avoid overwhelming servers with too many requests\n3. **Identify yourself** - Use descriptive user agents\n4. **Handle errors gracefully** - Implement retry logic with exponential backoff\n5. **Cache responses** - Minimize duplicate requests\n\n## Technical Implementation\n\nWhen implementing web scrapers, consider...",
        "preview": "Web scraping is a powerful technique for extracting data from websites. However, it must be done responsibly to respect website resources and legal boundaries. Key principles include respecting robots.txt directives, using rate...",
        "summary": "Web scraping is a powerful technique for extracting data from websites. However, it must be done responsibly to respect website resources and legal boundaries. Always check and follow robots.txt directives, use rate limiting to avoid overwhelming servers, and identify yourself with descriptive user agents.",
        "scrapedAt": "2025-01-15T10:30:00Z",
        "scrapeStatus": "success",
        "wordCount": 1542,
        "readingTime": 7,
        "metadata": {
          "statusCode": 200,
          "contentQuality": "high"
        }
      },
      {
        "position": 2,
        "title": "Ethical Web Scraping Guidelines",
        "url": "https://another.com/ethics",
        "description": "Guidelines for responsible web scraping practices...",
        "displayLink": "another.com",
        "markdown": "# Ethical Web Scraping\n\nWhen scraping websites, it's crucial to follow ethical guidelines that protect both the scraper and the website owner. This includes respecting terms of service, avoiding personal data collection without consent, and being transparent about your scraping activities.",
        "content": "# Ethical Web Scraping\n\nWhen scraping websites, it's crucial to follow ethical guidelines that protect both the scraper and the website owner. This includes respecting terms of service, avoiding personal data collection without consent, and being transparent about your scraping activities.",
        "preview": "When scraping websites, it's crucial to follow ethical guidelines that protect both the scraper and the website owner. This includes respecting terms of service, avoiding personal data collection without consent, and being...",
        "summary": "When scraping websites, it's crucial to follow ethical guidelines that protect both the scraper and the website owner. This includes respecting terms of service, avoiding personal data collection without consent, and being transparent about your scraping activities.",
        "scrapedAt": "2025-01-15T10:30:05Z",
        "scrapeStatus": "success",
        "wordCount": 987,
        "readingTime": 5,
        "metadata": {
          "statusCode": 200,
          "contentQuality": "high"
        }
      }
    ],
    "totalResults": 12400,
    "searchTime": 8.5,
    "creditsUsed": 6
  }
}

Search with AI Extraction

curl -X POST "https://api.whizo.ai/v1/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "top SaaS companies 2025",
    "limit": 10,
    "scrapeResults": true,
    "scrapeOptions": {
      "format": "structured",
      "extractionSchema": {
        "companyName": "string",
        "revenue": "string",
        "employees": "number",
        "founded": "number",
        "description": "string"
      }
    }
  }'

Error Responses

error
object

Common Errors

Status CodeError CodeDescription
400invalid_querySearch query is invalid or empty
400invalid_limitLimit must be between 1 and 20
401unauthorizedInvalid or missing API key
402insufficient_creditsNot enough credits for search and scraping
429rate_limitedRate limit exceeded
500search_failedSearch provider returned an error
500scraping_failedFailed to scrape one or more results
{
  "success": false,
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits. Required: 11, Available: 5",
    "details": {
      "required": 11,
      "available": 5
    }
  }
}

Credit Costs

OperationCost
Search (without scraping)1 credit
Search with scraping1 credit + 1 credit per result
Search with scraping + screenshots1 credit + 2 credits per result
Examples:
  • Search only (10 results): 1 credit
  • Search + scrape 5 results: 1 + 5 = 6 credits
  • Search + scrape 10 results with screenshots: 1 + (10 × 2) = 21 credits

Rate Limits

Rate limits vary by plan:
  • Free: 10 requests per hour, 100 per day
  • Starter: 50 requests per hour, 500 per day
  • Pro: 200 requests per hour, 2000 per day
  • Enterprise: Custom limits

Use Cases

Market Research

Search for competitors and automatically scrape their content for analysis:
{
  "query": "competitors in AI web scraping market",
  "limit": 20,
  "scrapeResults": true,
  "scrapeOptions": { "format": "markdown" }
}

Content Discovery

Find relevant articles and extract key information:
{
  "query": "latest AI trends 2025",
  "limit": 10,
  "scrapeResults": true,
  "scrapeOptions": {
    "format": "structured",
    "extractionSchema": {
      "title": "string",
      "summary": "string",
      "keyPoints": "array",
      "publishDate": "string"
    }
  }
}

Lead Generation

Search for potential customers and extract contact information:
{
  "query": "SaaS companies looking for web scraping solutions",
  "limit": 15,
  "scrapeResults": true,
  "scrapeOptions": {
    "extractionSchema": {
      "companyName": "string",
      "email": "string",
      "phone": "string",
      "website": "string"
    }
  }
}

Best Practices

  1. Start without scraping to preview results before consuming credits
  2. Use appropriate limit to balance cost and comprehensiveness
  3. Enable caching with maxAge to avoid re-scraping recent results
  4. Handle partial failures - some results may scrape successfully while others fail
  5. Implement pagination for large result sets by adjusting limit
  6. Use country/language parameters for localized results
  7. Monitor credit usage especially when scraping many results