Skip to main content
POST
/
api
/
v1
/
search
Search web content
curl --request POST \
  --url https://app.dumplingai.com/api/v1/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "query": "best running shoes",
  "scrapeResults": true
}'
{
  "searchParameters": {
    "q": "<string>",
    "type": "<string>",
    "engine": "<string>",
    "gl": "<string>",
    "hl": "<string>"
  },
  "organic": [
    {
      "title": "<string>",
      "link": "<string>",
      "snippet": "<string>",
      "position": 123,
      "sitelinks": [
        {
          "title": "<string>",
          "link": "<string>"
        }
      ],
      "date": "<string>",
      "scrapeOutput": {
        "title": "<string>",
        "metadata": {},
        "url": "<string>",
        "format": "<string>",
        "cleaned": true,
        "content": "<string>"
      }
    }
  ],
  "featuredSnippet": {
    "title": "<string>",
    "link": "<string>",
    "snippet": "<string>",
    "position": 123,
    "type": "<string>"
  },
  "relatedSearches": [
    {
      "query": "<string>"
    }
  ],
  "peopleAlsoAsk": [
    {
      "question": "<string>",
      "snippet": "<string>",
      "title": "<string>",
      "link": "<string>"
    }
  ]
}

Description

This endpoint performs a Google web search and optionally scrapes the content of the top search results, returning both search results and scraped content.

Endpoint

POST https://app.dumplingai.com/api/v1/search

Headers

  • Content-Type: application/json
  • Authorization: Bearer <API_KEY> (required)

Request Body

{
  "query": "string", // Required. The search query.
  "country": "string", // Optional. Country code for location bias (e.g., "US" for United States).
  "location": "string", // Optional. Specific location to focus the search (e.g., "New York, NY").
  "language": "string", // Optional. Language code for the search results (e.g., "en" for English).
  "dateRange": "string", // Optional. Can be "anyTime", "pastHour", "pastDay", "pastWeek", "pastMonth", or "pastYear".
  "page": "number", // Optional. Page number for paginated results.
  "scrapeResults": "boolean", // Optional. Whether to scrape top search results. Default: false.
  "numResultsToScrape": "number", // Optional. Number of top results to scrape. Default: 3. Max: 10.
  "scrapeOptions": {
    // Optional. Options for scraping, if scrapeResults is true.
    "format": "string", // Optional. The format of the output. Valid values: "markdown", "html", "screenshot". Default: "markdown".
    "cleaned": "boolean" // Optional. Whether the output should be cleaned. Default: true.
  }
}

Responses

Success (200)

Returns the search results and optionally scraped content.
{
  "searchParameters": {
    "q": "string", // The search query
    "type": "string", // e.g., "search"
    "engine": "string", // e.g., "google"
    "gl": "string", // Optional. Google country code
    "hl": "string" // Optional. Host language
  },
  "organic": [
    {
      "title": "string",
      "link": "string",
      "snippet": "string",
      "position": "number",
      "sitelinks": [
        {
          "title": "string",
          "link": "string"
        }
      ],
      "date": "string", // Optional. Publication date if available
      "scrapeOutput": {
        // Optional. Present only if scraping was requested
        "title": "string",
        "metadata": "object",
        "url": "string",
        "format": "string", // "markdown", "html", or "screenshot"
        "cleaned": "boolean",
        "content": "string"
      }
    }
  ],
  "featuredSnippet": {
    "title": "string",
    "link": "string",
    "snippet": "string",
    "position": "number",
    "type": "string"
  },
  "relatedSearches": [
    {
      "query": "string"
    }
  ],
  "peopleAlsoAsk": [
    {
      "question": "string",
      "snippet": "string",
      "title": "string",
      "link": "string"
    }
  ]
}
  • Content-Type: application/json
  • X-RateLimit-Limit: The rate limit for the user.
  • X-RateLimit-Remaining: The remaining number of requests for the user.

Bad Request (400)

Returned if the request is invalid.
{
  "error": "Error message describing the issue"
}

Unauthorized (401)

Returned if the API key is invalid or missing.
{
  "error": "Invalid or missing Authorization header"
}

Internal Server Error (500)

Returned if there’s an error during the search or scraping process.
{
  "error": "Failed to perform search: [error message]"
}

Example Request

curl -X POST https://app.dumplingai.com/api/v1/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
  "query": "DumplingAI",
  "country": "US",
  "language": "en",
  "dateRange": "pastMonth",
  "scrapeResults": true,
  "numResultsToScrape": 3,
  "scrapeOptions": {
    "format": "html",
    "cleaned": false
  }
}'

Notes

  • The maximum number of results that can be scraped is 10.
  • If numResultsToScrape is set higher than 10, it will be capped at 10.
  • If numResultsToScrape is not provided, the default value is 3.
  • Credit usage:
    • Base cost for search: 3 credits per page of results
    • Additional credits for scraping are charged normally on the /scrape endpoint.
  • If scrapeResults is false, no URLs will be scraped and the scrapeOutput field will not be present in the organic results.
  • The scrapeOptions field allows customization of the scraping process:
    • format can be “markdown”, “html”, or “screenshot”. If not specified, “markdown” is used.
    • cleaned determines whether the output should be cleaned. If not specified, it defaults to true.
  • The dateRange parameter can be used to filter results by date. Valid values are “anyTime”, “pastHour”, “pastDay”, “pastWeek”, “pastMonth”, or “pastYear”.
  • The country parameter should be a two-letter country code (e.g., “US” for United States).
  • The location parameter can be used to focus the search on a specific area. You can find a list of supported locations at GET: /api/v1/google-locations
  • The language parameter can be used to specify the desired language for the search results.
  • Usage is recorded with detailed parameters for each request.
  • Events may be logged for analytics purposes if enabled.

Rate Limiting

Rate limit headers (X-RateLimit-Limit and X-RateLimit-Remaining) are included in the response to indicate the user’s current rate limit status.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
query
string
required
country
string

2-letter country code forwarded as gl.

location
string

Free-form location context forwarded to the provider.

language
string

Interface language forwarded as hl.

dateRange
enum<string>

Temporal filter applied to the search results.

Available options:
pastHour,
pastDay,
pastWeek,
pastMonth,
pastYear,
anyTime
page
integer
Required range: x >= 1
scrapeResults
boolean
default:false

When true, the service will scrape top organic results for rich content.

numResultsToScrape
integer
default:3
Required range: 1 <= x <= 10
scrapeOptions
object
requestSource
enum<string>

Optional identifier describing where the API request originated.

Available options:
API,
WEB,
MAKE_DOT_COM,
ZAPIER,
N8N,
PLAYGROUND,
DEFAULT_AUTOMATION,
AGENT_PREVIEW,
AGENT_LIVE,
AUTOPILOT,
STUDIO

Response

Search results returned.

searchParameters
object
required
organic
object[]
required
peopleAlsoAsk
object[]