SERP feature types
format: "advanced" returns every SERP feature Serplify detects. Each item is
discriminated by its type and carries the shared ranking fields
(rank_absolute, rank_group, page).
Fully-typed features
Section titled “Fully-typed features”These types have rich, stable, documented fields:
type | Description | Notable fields |
|---|---|---|
organic | Classic organic result | domain, title, description, url, breadcrumb, highlighted, links, rating, price, images, faq |
paid | Paid ad | domain, title, description, url, breadcrumb, description_rows, price, rating |
featured_snippet | Answer box pulled from a page | domain, title, description, url, featured_title, table |
ai_overview | Google AI Overview | items[] (text/markdown/links/images/references), references[], asynchronous_ai_overview |
people_also_ask | ”People also ask” accordion | items[] with title, seed_question, expanded_element[] |
related_searches | Related search chips | items[] (strings) |
refinement_chips | Refinement/filter chips | items[] with title, options[] |
knowledge_graph | Knowledge panel | title, subtitle, description, url, image_url, cid, items[] |
local_pack | Google Business (map 3-pack) | title, description, domain, phone, url, rating, cid |
Additional detected features
Section titled “Additional detected features”These are also returned when present, with a common, flexible field set
(title, description, url, items[], images[], rating, price, and
type-specific extras):
images, video, short_videos, top_stories, twitter, map, shopping,
popular_products, answer_box, currency_box, math_solver,
people_also_search, jobs, events, recipes, carousel,
multi_carousel, mention_carousel, app, commercial_units,
compare_sites, courses, discussions_and_forums, explore_brands,
find_results_on, found_on_web, google_flights, google_hotels,
google_posts, google_reviews, hotels_pack,
knowledge_graph_expanded_item, knowledge_graph_images_item,
local_services, perspectives, product_considerations,
questions_and_answers, scholarly_articles, third_party_reviews,
top_sights.
Working with mixed types
Section titled “Working with mixed types”Because items is a mixed list, switch on type:
for (const item of data.items) { switch (item.type) { case "organic": console.log(item.rank_absolute, item.domain, item.url); break; case "local_pack": console.log("GMB:", item.title, item.cid); break; case "people_also_ask": console.log("PAA questions:", item.items?.map((q) => q.title)); break; }}Use feature_types on the result to see which types are present before
iterating.