serp·base API Documentation

Google images

Image results from Google: direct image URLs, thumbnails, sizes, source pages.

$1.00 / 1,000 POST /v1/query x402 · USDC on Base

Overview

Single endpoint, predictable JSON. Send POST /v1/query with the tool field set to google_images.

curl -X POST https://api.serp-base.com/v1/query \
  -H "Content-Type: application/json" \
  -d '{"tool": "google_images", "query": "espresso machine"}'

Parameters

FieldTypeRequiredDescriptionExample
querystringrequiredSearch phraseespresso machine
depthintoptionalImages count, 10..10020, 50
geoint|stringoptionalRegionus
sizestringoptionalImage size filterlarge, medium, icon
typestringoptionalImage typephoto, clipart, lineart, face

Regions optional

Pass either a numeric code or a name. Common examples:

RegionCode
United Statesus / 2840
New York84 / new york
London1000000 / london
Berlin96 / berlin
Paris225 / paris

Code examples

cURL

curl -X POST https://api.serp-base.com/v1/query \
  -H "Content-Type: application/json" \
  -d '{"tool": "google_images", "query": "espresso machine", "depth": 20}'

Python

import requests

r = requests.post("https://api.serp-base.com/v1/query", json={
  "tool": "google_images",
  "query": "espresso machine",
  "depth": 20
})
print(r.json()["data"])

JavaScript

const r = await fetch('https://api.serp-base.com/v1/query', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
  "tool": "google_images",
  "query": "espresso machine",
  "depth": 20
})
});
const { data } = await r.json();

PHP

$ch = curl_init('https://api.serp-base.com/v1/query');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
  CURLOPT_POSTFIELDS => '{"tool": "google_images", "query": "espresso machine", "depth": 20}',
  CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);

Response

{
  "ok": true,
  "data": {
    "results": [
      {
        "position": 1,
        "url": "https://img...",
        "title": "...",
        "source": "https://..."
      }
    ]
  }
}

Payment

Pay per request with USDC on Base via the x402 protocol. Gas is paid by the facilitator — you only need USDC in your wallet.

No payment is taken when a service fails. We run the work first and settle afterwards.

Errors

CodeMeaningAction
402Payment requiredSign the payment and retry with X-PAYMENT
400Bad parametersCheck required fields above
422Data could not be producedNothing charged — retry later
429Rate limitedBack off and retry
503Tool temporarily unavailableRetry later — nothing charged

Related tools

Google organic results · Yandex organic results · Yandex images · News · Shopping · Suggestions

Pay-per-request data APIs. Built for agents and developers.