Що змінюється
За документацією Google, Custom Search JSON API закрито для нових клієнтів, а наявні клієнти мають час до 1 січня 2027 року на перехід до альтернативного рішення. Та сама сторінка описує API як спосіб отримувати вебрезультати й результати за зображеннями з Programmable Search Engine — системи, яку ви налаштовуєте і вказуєте через cx.
Дати й умови визначає Google, і вони можуть змінюватися; перевірте їх на сторінці Google, перш ніж призначати дедлайн.
Що натомість повертає Serper.live
Serper.live — живий Google SERP API: кожен запит виконує справжній пошук Google для обраних вами країни й пристрою і повертає органічні результати, показані в цей момент, до 100 на запит (типово 10), у форматі JSON.
Це не власна пошукова система і не пошук по сайту: немає системи для налаштування, немає індексу ваших сторінок. Запит зазвичай триває 2–3 секунди, бо завантажує Google наживо, і тарифікується за запит із передплаченого балансу.
Якщо ваша інтеграція з Custom Search показувала, що Google ранжує за запитом, це ближча заміна. Якщо ж вона забезпечувала пошук усередині вашого сайту чи по фіксованому списку доменів, вам потрібен продукт для пошуку по сайту: документація Google для цього випадку вказує на Vertex AI Search.
Відповідність параметрів
Зліва Custom Search JSON API, справа Serper.live:
q→query: ключове слово, 2–120 символів.gl→country: дволітерний код відкритого ринку зGET /v1/countries(зараз: Німеччина, Франція, Велика Британія, Туреччина, Україна і Сполучені Штати).hl→language: мова інтерфейсу Google; необов’язково, типово мова країни.num→limit: органічних результатів на запит, 1–100 (типово 10; кожна розпочата десятка коштує одну ціну ринку).start→ відповідника немає: замість пагінації піднімітьlimit, і один виклик поверне до 100 органічних результатів.cx→ не потрібен: системи для налаштування немає, запит шукає в Google для ринку.key→ заголовокAuthorization: Bearerіз вашим токеномsl_live_.items[]→organic[]:linkстаєurl,displayLinkприблизно відповідаєdomain;titleіsnippetзберігають назви, аsnippetможе бутиnull.
Кроки міграції
Запит нижче — це вся інтеграція; кроки навколо нього:
- Створіть акаунт і токен, поповніть баланс від $5 у USDT або USDC.
- Замініть GET до ендпоїнта Custom Search на
POST https://api.serper.live/v1/searchіз JSON-тілом і заголовкомAuthorization. - Зіставте параметри, як описано вище; приберіть
cxіstart. - Читайте
organic[]замістьitems[], перейменуйтеlinkнаurlі обробляйтеsnippetзі значеннямnull. - Збільште HTTP-тайм-аут щонайменше до 100 секунд і ставте виклик у чергу, а не виконуйте його всередині запиту користувача: живий пошук зазвичай триває 2–3 секунди, перший для ринку після паузи — довше.
- Надсилайте
Idempotency-Key, щоб повторний виклик не списувався двічі. - Кілька днів запускайте обидва паралельно, порівняйте, потім переходьте.
curl -X POST https://api.serper.live/v1/search \
-H "Authorization: Bearer sl_live_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"best coffee shops","country":"DE"}'
const response = await fetch('https://api.serper.live/v1/search', {
method: 'POST',
headers: {
Authorization: 'Bearer sl_live_YOUR_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ query: 'best coffee shops', country: 'DE' }),
signal: AbortSignal.timeout(100000),
});
const result = await response.json();
console.log(result.organic);
import requests
response = requests.post(
"https://api.serper.live/v1/search",
headers={"Authorization": "Bearer sl_live_YOUR_TOKEN"},
json={"query": "best coffee shops", "country": "DE"},
timeout=100,
)
print(response.json()["organic"])