AnswerLine Start free

Google Search

Google Search People Also Ask

The People Also Ask questions Google clusters around a query, with their answers.

`peopleAlsoAsk` returns the questions on the page with the page or AI Overview that answers each one: the subtopics Google associates with a keyword, for research and content planning.

Returned in result

Field
peopleAlsoAsk

Request

curl -X POST "https://api.answerline.dev/v1/monitor/google" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"project management software","country":"US","include":{"aioverview":{"markdown":true}}}'

What People Also Ask is

People Also Ask (PAA) is the Google results module that lists related questions as expandable rows. Each row opens to an answer: either a snippet from a web page with its link, or a short AI-generated overview with its own sources.

result.peopleAlsoAsk returns the questions shown on the page for your query, with the answer data for each. It is Google’s own map of what searchers ask next about a topic. The questions become headings, FAQ entries and articles, and seed prompt sets for AI visibility tracking with phrasings searchers use. The answers show which domains Google picks for each question, and how many questions in a topic it already answers with generated text instead of a link.

Field reference

result.peopleAlsoAsk[]

Field Type Meaning
question string The question text.
type AIOVERVIEW, LINK or UNKNOWN How the question is answered.
snippet string Answer snippet, for LINK items.
title string Title of the answering page, for LINK items.
link string URL of the answering page, for LINK items.
markdown string AI Overview answer as markdown, for AIOVERVIEW items when include.paaAioverview is true.
sources[] array Sources cited by that AI Overview answer, for AIOVERVIEW items when include.paaAioverview is true.
sources[].label string Title of the source.
sources[].url string URL of the source.
sources[].description string Description of the source.
sources[].position number 1-indexed position of the source.
sources[].redirectLink string Google’s /goto redirect for the source URL, present only when Google served one.
redirectLink string Google’s /goto redirect for link, present only when Google served the link as a redirect.

Annotated excerpt

Values are illustrative; names and types follow the POST /v1/monitor/google result schema. The request set include.paaAioverview: true.

{
  "result": {
    "peopleAlsoAsk": [
      {
        "question": "How often should you replace running shoes?",
        "type": "LINK",                               // answered by a web page
        "snippet": "Most running shoes last between 300 and 500 miles...",
        "title": "When to Replace Running Shoes",
        "link": "https://www.example-running.com/replace-shoes"
      },
      {
        "question": "Are expensive running shoes worth it?",
        "type": "AIOVERVIEW",                         // answered by generated text
        // markdown and sources exist only because include.paaAioverview was true
        "markdown": "Price tracks **materials and cushioning technology** more than injury prevention...",
        "sources": [
          {
            "label": "Do pricier running shoes prevent injuries?",
            "url": "https://sports-science.example.org/shoe-price-study",
            "description": "A review of studies comparing...",
            "position": 1
          }
        ]
      }
    ]
  }
}

Without include.paaAioverview, the second item would carry only question and type.

Cost

PAA needs no flag and costs nothing extra: it comes with the base Google Search price, $0.00103 for one page.

include.paaAioverview: true is free. It fills in each AIOVERVIEW item, typically one or two per page, and responses take longer as a result.

PAA is read from the first results page; requesting more pages adds organic depth, not more questions.

Example: mine questions and answer owners across a seed set

The script runs a seed keyword list, then reports the questions that recur across seeds, the domains that answer LINK questions, and the share of questions Google answers with an AI Overview.

import os
import re
import time
from collections import Counter, defaultdict
from datetime import date
from urllib.parse import urlparse

import requests

API = "https://api.answerline.dev"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
SEEDS = ["running shoes for beginners", "trail running shoes", "running shoe drop", "how to choose running shoes"]
DAY = date.today().isoformat()


def run_tasks(tasks):
    resp = requests.post(f"{API}/v1/async/task/batch", headers=HEADERS, json=tasks, timeout=60)
    resp.raise_for_status()
    pending = {item["task"]["id"]: tasks[item["index"]] for item in resp.json()["results"] if item["success"]}
    done = []
    while pending:
        time.sleep(10)
        for task_id in list(pending):
            body = requests.get(f"{API}/v1/async/task/{task_id}", headers=HEADERS, timeout=30).json()
            if body["task"]["status"] in ("COMPLETED", "FAILED"):
                task = pending.pop(task_id)
                if body["task"]["status"] == "COMPLETED":
                    done.append((task["payload"]["query"], body["response"]["result"]))
    return done


def normalize(question):
    return re.sub(r"[^a-z0-9 ]", "", question.lower()).strip()


tasks = [
    {
        "taskType": "GOOGLE",
        "payload": {"query": seed, "country": "US", "include": {"paaAioverview": True}},
        "idempotencyKey": f"paa-{i}-{DAY}",
    }
    for i, seed in enumerate(SEEDS)
]

seen_in = defaultdict(set)     # question -> seeds it appeared for
wording = {}
answer_domains = Counter()
cited_by_ai = Counter()
types = Counter()
for seed, result in run_tasks(tasks):
    for item in result["peopleAlsoAsk"]:
        key = normalize(item["question"])
        wording.setdefault(key, item["question"])
        seen_in[key].add(seed)
        types[item.get("type", "UNKNOWN")] += 1
        if item.get("type") == "LINK" and item.get("link"):
            answer_domains[(urlparse(item["link"]).hostname or "").removeprefix("www.")] += 1
        for src in item.get("sources", []):
            cited_by_ai[(urlparse(src["url"]).hostname or "").removeprefix("www.")] += 1

total = sum(types.values()) or 1
print(f"questions: {total}, AI-answered: {types['AIOVERVIEW'] / total:.0%}, link-answered: {types['LINK'] / total:.0%}")
print("\nRecurring questions (appear for 2+ seeds):")
for key, seeds in sorted(seen_in.items(), key=lambda kv: -len(kv[1])):
    if len(seeds) > 1:
        print(f"  [{len(seeds)}] {wording[key]}")
print("\nDomains answering LINK questions:", answer_domains.most_common(8))
print("Domains cited in AI answers:", cited_by_ai.most_common(8))

Questions that recur across several seeds are the core of a topic cluster; questions that appear once are its edges. Run the recurring ones as new queries to expand another level.

Pitfalls

The questions shown for a query change over time and by location. Store the date and market with every question, and merge several runs before deciding a question is gone.

The same question can differ by punctuation or capitalization across queries. Deduplicate on a normalized form and keep the original wording for display.

Without include.paaAioverview, AIOVERVIEW items carry only question and type. snippet, title and link belong to LINK items, and UNKNOWN items may have no answer data. Read every answer field with .get().

Each request returns one level of questions. Deeper expansion means running those questions as queries yourself.

include.paaAioverview makes responses slower, so run large keyword sets as async tasks.

Questions

Does People Also Ask cost extra?

No. peopleAlsoAsk is returned with every Google Search request at the base price of $0.00103 for a one-page task. include.paaAioverview, which fills in AI-Overview-type answers, is free too.

What do the PAA types AIOVERVIEW, LINK and UNKNOWN mean?

LINK items are answered by a web page and carry snippet, title and link. AIOVERVIEW items are answered by a generated AI Overview; their markdown and sources are filled when include.paaAioverview is true. UNKNOWN covers items that are neither.

Does the API expand People Also Ask questions recursively?

No. It returns the questions shown on the results page for your query. To go deeper, run each returned question as a new query, which costs a new request.

Why is peopleAlsoAsk empty for some keywords?

Google does not show a People Also Ask box for every query. The array is always present in the result and is empty when the page has no box.

Does include.paaAioverview make requests slower?

Yes. Filling in each AI-Overview-type item takes extra time, and a page typically has one or two, so responses take longer. It adds no cost.

More Google Search data

All Google Search fields · API reference