---
name: read-search-results
description: "Get Google, Naver or Bing search results pages, storefront product rankings and product pages on Amazon, Walmart, Olive Young, Rakuten and more, or Reddit posts and comments, as JSON from a chosen country: organic results with positions, People Also Ask, and Bing's AI summary. Use it for rank tracking next to AI answers or to find the pages and threads AI engines cite. 1 credit per page for web search and Reddit; Commerce Search and Commerce Product cost 3 credits per search or product page."
---

# Read search results with querying.ai

Send `Authorization: Bearer $QUERYING_API_KEY` on every request to https://api.querying.ai. Getting a key, and the 500 credits a new account starts with: https://querying.ai/auth.md

| `taskType` | Returns | Credits |
| --- | --- | --- |
| `GOOGLE_SERP` | Google search results | 1 |
| `NAVER_SERP` | Naver search results | 1 |
| `COMMERCE_SERP` | Product rankings on one of 21 storefronts per task, with numeric prices, currency, ratings and review counts | 3 |
| `COMMERCE_PRODUCT` | One product page on 18 storefronts: price, stock, gallery and description images, specs and options | 3 |
| `BING_SEARCH` | Bing search results | 1 |
| `REDDIT` | Reddit posts and comments | 1 |

## Submit

```bash
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"taskType": "GOOGLE_SERP", "payload": {"query": "best crm for small business", "country": "US", "page": 1}}'
```

- `query`: the search term. `country`: two-letter code, default `US` (KR on Naver).
- COMMERCE_SERP: required site, one of amazon (US), walmart (US), target (US), ebay (US), aliexpress (US), google_shopping (US), sephora (US), ulta (US), coupang (KR), oliveyoung (KR), 11st (KR), lotteon (KR), musinsa (KR), kurly (KR), rakuten (JP), yahoo_shopping (JP), qoo10 (JP), flipkart (IN), myntra (IN), nykaa (IN), zalando (DE); required query, 1-500 characters; country is optional and must be the site's own; limit 1-40, default 20. Returns site, query, country, returnedCount and products in one shape for every site: rank, productId, title, url, and when listed a numeric price with its ISO 4217 currency, rating out of 5, reviewCount, imageUrl, brand and seller. 3 credits per completed search.
- COMMERCE_PRODUCT: required url, a product page on amazon, walmart, target, ulta, sephora, oliveyoung, 11st, lotteon, musinsa, kurly, rakuten, yahoo_shopping, qoo10, flipkart, myntra, nykaa, zalando, google_shopping. The URL sets the site and country. Returns site, country, url, productId, title, and when the page shows them brand, price, listPrice, currency, inStock, seller, rating, reviewCount, images (the gallery), descriptionImages (the seller's detail images in page order), description, specs, options, categories and gtin. Reviews are not included. 3 credits per completed read.
- `page`: 1-10 on `GOOGLE_SERP` and `NAVER_SERP`. Positions count across pages, so page 2 starts at 11 on Google.
- `location`: a point inside the country, as `latitude` and `longitude`, on `GOOGLE_SERP`.
- `REDDIT`: `query` searches posts; `subreddit` narrows it; a post `url` returns the post with its first page of comments; `"action": "feed"` lists a subreddit's newest posts.

## Read the result

Tasks run asynchronously. The POST returns `task.id` with `status` `QUEUED`. Poll `GET /v1/async/task/{id}` every few seconds until `task.status` is `COMPLETED` or `FAILED`, or add `"webhook": {"url": "https://your.server/hook"}` to the request and the finished task arrives at that URL as a POST. A finished task stays readable for 24 hours.

- `organicResults[]`: `position`, `title`, `link` and the snippet, with the `page` each came from.
- `peopleAlsoAsk[]` on Google. On `BING_SEARCH`, `aioverview` holds Bing's AI summary and is `null` when the page showed none.
- To read a result page itself, pass its `link` to `WEB_SCRAPE` (the scrape-web-page skill).

## Errors

| HTTP | `code` | When |
| --- | --- | --- |
| 401 | `MISSING_API_KEY` | The key is missing, wrong, expired or revoked. |
| 402 | `INSUFFICIENT_CREDITS` | The account balance is below the task's credits. |
| 403 | `KEY_SCOPE_DENIED` | The key is limited to other engines. |
| 422 | `REGION_UNSUPPORTED` | The engine serves other countries; pick another engine or country. |
| 429 | `KEY_DAILY_CREDIT_LIMIT` | The key reached its daily credit limit; `details.retryAfterSec` counts down to the next UTC day. |

Reference: https://docs.querying.ai/engines/overview
