Google data, ready when you are.

Web search, news, images, shopping and Play Store reviews from Google.

Try in playground From $0.00009 a record · $0.10 free

What you can get.

  • $0.0009per record

    Search

    Google web results. Organic links with titles, snippets and rank; supports operators (site:, intitle:, OR). Billed per page of about ten results.

    Try it →
  • $0.0018per record

    News

    Google News articles for a query. Headline, publisher, date, link.

    Try it →
  • $0.0009per record

    Images

    Google Images for a query. URL, source page, dimensions, thumbnail.

    Try it →
  • $0.0027per record

    Shopping

    Google Shopping offers for a query. Title, merchant, price, rating.

    Try it →
  • $0.00009per record

    Play reviews

    Play Store reviews for up to five apps, by package id or store URL.

    Try it →

What the data looks like.

ranktitledomainsnippetpublishedDatelinkdetails
1How to price a B2B SaaS product (2026 guide)northfold.exampleA step-by-step way to set your first price, with worked examples.2026-08-12https://www.google.com/how-to-price-a-b2b-saas-product-2026-gui-1000
  • {}
2SaaS pricing models comparedledgerly.examplePer seat, usage-based and flat fees, side by side.2026-06-30https://www.google.com/saas-pricing-models-compared-1001
  • {}
3Pricing page examples that convertbrightdesk.example24 real pricing pages and what they get right.2026-09-18https://www.google.com/pricing-page-examples-that-convert-1002
  • {}
7 fields, scroll sideways for all. Example rows: made-up names, real field names. Live calls return real data.

For developers

API reference.

One endpoint, POST /v1/google. Open an operation to see its fields.

Read the docs
Newsnews

Google News articles for a query. Headline, publisher, date, link.

FieldTypeMeaning
query *string · ≤300 chars
postedWithinenum1h · 1d · 7d · 1y · any
countrystring · ISO alpha-2The Google News market and its language.
languagestring · BCP-47
limitinteger · 1-100

Response fields, each row of data

FieldType
articleUrlstring
titlestring
sourcestring
publishedAtstring
publishedTimestampinteger
imageUrlstring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · news
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"news","query":"electric vehicles","postedWithin":"7d","country":"US","language":"en","limit":20}'

Example response rows

data · made-up names, real field names
[
  {
    "title": "Kitebank opens its first branch in Europe",
    "source": "Daily Ledger",
    "publishedAt": "2026-10-15T08:00:00Z",
    "articleUrl": "https://www.google.com/kitebank-opens-its-first-branch-in-europ-1000",
    "imageUrl": "https://img.google.com/kitebank-opens-its-first-branch-in-europ.jpg",
    "details": {}
  },
  {
    "title": "Northfold raises $40M to automate finance teams",
    "source": "Tech Wire",
    "publishedAt": "2026-10-13T14:30:00Z",
    "articleUrl": "https://www.google.com/northfold-raises-40m-to-automate-finance-1001",
    "imageUrl": "https://img.google.com/northfold-raises-40m-to-automate-finance.jpg",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try news in the playground Examples and pricing for news
Imagesimages

Google Images for a query. URL, source page, dimensions, thumbnail.

FieldTypeMeaning
query *string · ≤300 chars
limitinteger · 1-100

Response fields, each row of data

FieldType
imageUrlstring
titlestring
sourceDomainstring
sourcePageUrlstring
thumbnailUrlstring
imageTypestring
imageWidthinteger
imageHeightinteger
megapixelsnumber
orientationstring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · images
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"images","query":"Eiffel Tower at night","limit":20}'

Example response rows

data · made-up names, real field names
[
  {
    "title": "Minimal home office setup",
    "sourceDomain": "northfold.example",
    "imageType": "photo",
    "imageWidth": 1600,
    "imageHeight": 1067,
    "megapixels": 1.7,
    "orientation": "landscape",
    "imageUrl": "https://img.google.com/minimal-home-office-setup.jpg",
    "sourcePageUrl": "https://www.google.com/minimal-home-office-setup-1000",
    "thumbnailUrl": "https://img.google.com/minimal-home-office-setup.jpg",
    "details": {}
  },
  {
    "title": "Home office with plants",
    "sourceDomain": "interiors.example",
    "imageType": "photo",
    "imageWidth": 1080,
    "imageHeight": 1350,
    "megapixels": 1.5,
    "orientation": "portrait",
    "imageUrl": "https://img.google.com/home-office-with-plants.jpg",
    "sourcePageUrl": "https://www.google.com/home-office-with-plants-1001",
    "thumbnailUrl": "https://img.google.com/home-office-with-plants.jpg",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try images in the playground Examples and pricing for images
Shoppingshopping

Google Shopping offers for a query. Title, merchant, price, rating.

FieldTypeMeaning
query *string · ≤300 chars
countrystring · ISO alpha-2
languagestring · BCP-47
postedWithinenum1h · 1d · 7d · 30d · any
limitinteger · 1-100

Response fields, each row of data

FieldType
productIdstring
productUrlstring
titlestring
merchantstring
pricestring
priceValuenumber
ratingnumber
reviewCountinteger
positioninteger
imagestring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · shopping
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"shopping","query":"Sony WH-1000XM5","country":"US","language":"en","limit":20}'

Example response rows

data · made-up names, real field names
[
  {
    "title": "Sonora Buds Pro, Noise Cancelling",
    "merchant": "Sonora Store",
    "price": "$79.00",
    "priceValue": 79,
    "rating": 4.4,
    "reviewCount": 2310,
    "position": 1,
    "productId": "1059897925",
    "productUrl": "https://www.google.com/sonora-buds-pro-noise-cancelling-1000",
    "details": {}
  },
  {
    "title": "Sonora Buds Pro, Noise Cancelling",
    "merchant": "GadgetHub",
    "price": "$84.99",
    "priceValue": 84.99,
    "rating": 4.4,
    "reviewCount": 2310,
    "position": 2,
    "productId": "2615731860",
    "productUrl": "https://www.google.com/sonora-buds-pro-noise-cancelling-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try shopping in the playground Examples and pricing for shopping
Play reviewsplayReviews

Play Store reviews for up to five apps, by package id or store URL.

FieldTypeMeaning
subjects *list of string · 1-5 itemsPackage ids or Play Store URLs.
countrystring · ISO alpha-2
languagestring · BCP-47
sortenumnewest · rating_high · helpful
limitinteger · 1-100

Response fields, each row of data

FieldType
reviewIdstring
reviewUrlstring
reviewerstring
reviewerPhotostring
ratingnumber
reviewTextstring
postedstring
appVersionstring
helpfulVotesinteger
developerReplystring
replyDatestring
subratingsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · playReviews
curl -X POST https://apiforagents.dev/v1/google \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50}'

Example response rows

data · made-up names, real field names
[
  {
    "reviewer": "Ravi K.",
    "rating": 5,
    "reviewText": "Fast and simple. Exactly what I needed.",
    "appVersion": "4.12.0",
    "helpfulVotes": 38,
    "posted": "2026-10-14",
    "developerReply": "Thanks Ravi!",
    "reviewId": "4228410525",
    "reviewUrl": "https://www.google.com/ravi-k-1000",
    "replyDate": "2026-10-02",
    "details": {}
  },
  {
    "reviewer": "Lena M.",
    "rating": 2,
    "reviewText": "Keeps logging me out after the update.",
    "appVersion": "4.12.0",
    "helpfulVotes": 104,
    "posted": "2026-10-13",
    "developerReply": "Sorry! A fix ships in 4.12.1.",
    "reviewId": "2870120323",
    "reviewUrl": "https://www.google.com/lena-m-1001",
    "replyDate": "2026-10-07",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try play reviews in the playground Examples and pricing for play reviews

Guides and ideas.

Use it from your tools.