Szybka odpowiedź
Jakie parametry przyjmuje endpoint wyszukiwania SerpCrypto?
GET https://serpcrypto.com/api/v1/search przyjmuje jeden wymagany parametr, q, i dziewięć opcjonalnych: engine, gl, hl, location, google_domain, device, page, safe i period. SerpCrypto zwraca JSON i pobiera 1 kredyt za każde udane wyszukiwanie na wszystkich 6 wyszukiwarkach; błędy są darmowe. Pakiety startują od 7,50 USD za 10 000 wyszukiwań, płatne kryptowalutą bez KYC.
Jak się uwierzytelnić?
Wyślij swój klucz na jeden z dwóch sposobów. Zalecany sposób to nagłówek Authorization: Bearer YOUR_KEY. Drugi to parametr zapytania api_key=YOUR_KEY, wygodny do szybkiego testu w karcie przeglądarki.
Brakujący, błędny lub unieważniony klucz zwraca 401 invalid_api_key i nic nie kosztuje. Klucze API, które możesz tworzyć i unieważniać w dowolnym momencie z panelu, więc możesz dać każdemu skryptowi lub serwerowi własny klucz i unieważnić jeden, nie ruszając pozostałych.
Uruchom wyszukiwanie
GET/api/v1/search
Uruchamia jedno wyszukiwanie na wybranej wyszukiwarce i zwraca stronę wyników jako JSON. Udane wyszukiwanie zużywa 1 kredyt, niezależnie od wyszukiwarki; błąd nie zużywa nic. Parametry idą w query stringu, zakodowane URL-em. Przykład pyta Google o palarnie kawy w Austin w Teksasie; ID, liczby i wyniki są przykładowe.
Uwierzytelnianie: klucz API w nagłówku Authorization: Bearer API_KEY.
Parametry
| Nazwa | W | Typ | Wymagane | Opis |
|---|---|---|---|---|
q | query | string | Tak | Zapytanie, tak jak wpisałby je człowiek. Operatory wyszukiwania, takie jak cudzysłowy lub site:, są częścią zapytania. |
engine | query | string | Nie | google (domyślnie), google_news, google_images, google_maps, google_shopping lub bing. |
gl | query | string | Nie | Kraj wyników: kod ISO 3166-1 alpha-2 małymi literami, np. us, de lub br. Domyślnie us. |
hl | query | string | Nie | Język interfejsu, np. en, de lub pt-BR. Domyślnie en. |
location | query | string | Nie | Miejsce na poziomie miasta, zapisane jako City, Region, Country, np. Austin, Texas, United States. Zobacz locations. |
google_domain | query | string | Nie | Domena Google do wyszukiwania, np. google.de. Domyślnie: domena kraju gl. Ignorowane, gdy engine=bing. |
device | query | string | Nie | desktop (domyślnie) lub mobile. |
page | query | integer | Nie | Strona wyników od 1 (domyślnie) do 10. Każda strona to osobne wyszukiwanie i zużywa 1 kredyt. |
safe | query | string | Nie | active filtruje wyniki dla dorosłych; off (domyślnie) nie filtruje. |
period | query | string | Nie | Tylko wyniki z ostatniej godziny (h), dnia (d), tygodnia (w), miesiąca (m) lub roku (y). |
api_key | query | string | Nie | Twój klucz, jeśli nie wysyłasz nagłówka Authorization. |
Odpowiedź 200
{
"search_metadata": {
"id": "srch_7f3a9c2e41b8",
"status": "success",
"engine": "google",
"created_at": "2026-10-22T09:14:05Z",
"credits_used": 1
},
"search_parameters": {
"engine": "google",
"q": "coffee roasters",
"gl": "us",
"hl": "en",
"location": "Austin, Texas, United States",
"google_domain": "google.com",
"device": "desktop",
"page": 1
},
"search_information": {
"total_results": 18600000,
"query_displayed": "coffee roasters"
},
"local_results": [
{
"position": 1,
"title": "Example Coffee Roasters",
"address": "123 Example St, Austin, TX",
"rating": 4.7,
"reviews": 312,
"type": "Coffee roasters"
}
],
"organic_results": [
{
"position": 1,
"title": "The 12 best coffee roasters in Austin",
"link": "https://www.example.com/austin/coffee-roasters",
"displayed_link": "www.example.com › austin › coffee",
"snippet": "From light Nordic roasts to dark espresso blends, these local roasters…",
"date": "Sep 30, 2026"
},
{
"position": 2,
"title": "Example Roasting Co. | Fresh beans, roasted in Austin",
"link": "https://www.example.org/",
"displayed_link": "www.example.org",
"snippet": "Small-batch coffee roasted every weekday and shipped the same day…"
}
],
"people_also_ask": [
{
"question": "What is the oldest coffee roaster in Austin?",
"snippet": "…",
"title": "Austin coffee history",
"link": "https://www.example.net/austin-coffee-history"
}
],
"related_searches": [
{
"query": "coffee roasters near me"
},
{
"query": "coffee roasters austin wholesale"
}
],
"pagination": {
"current": 1,
"next_page": 2
}
}Przykłady kodu
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=coffee roasters" \
--data-urlencode "location=Austin, Texas, United States" \
-d gl=us -d hl=en -d device=desktopimport os
import requests
r = requests.get(
"https://serpcrypto.com/api/v1/search",
params={
"q": "coffee roasters",
"location": "Austin, Texas, United States",
"gl": "us",
"hl": "en",
},
headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
timeout=60,
)
r.raise_for_status()
print(r.json()["organic_results"][0]["link"])const params = new URLSearchParams({
q: "coffee roasters",
location: "Austin, Texas, United States",
gl: "us",
hl: "en",
});
const res = await fetch("https://serpcrypto.com/api/v1/search?" + params, {
headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const data = await res.json();
console.log(data.organic_results?.[0]?.link);Jakie wartości engine istnieją i co każda zwraca?
Struktura (search_metadata, search_parameters, search_information) jest taka sama na każdej wyszukiwarce. Blok pojawia się tylko wtedy, gdy strona go pokazuje.
engine | Źródło | Główne bloki w odpowiedzi |
|---|---|---|
google | Google Search | ai_overview, organic_results, ads, people_also_ask, local_results, knowledge_graph, top_stories, inline_videos, shopping_results, related_searches, pagination |
google_news | Google News | news_results: title, link, source, date, snippet, thumbnail |
google_images | Google Images | images_results: oryginalny URL i rozmiar, miniatura, strona źródłowa |
google_maps | Google Maps | local_results: nazwa, adres, telefon, strona internetowa, ocena, opinie, kategoria, godziny, współrzędne |
google_shopping | Google Shopping | shopping_results: title, price, extracted price, currency, merchant, delivery, rating |
bing | Bing | organic_results, related_searches |
Odczytaj swoje kredyty
GET/api/v1/credits
Zwraca kredyty pozostałe na Twoim koncie, kredyty zużyte od północy UTC oraz liczbę wyszukiwań, które Twoje konto może uruchomić jednocześnie. To wywołanie jest bezpłatne. Poniższe wartości są przykładowe.
Uwierzytelnianie: klucz API w nagłówku Authorization: Bearer API_KEY.
Odpowiedź 200
{
"credits_remaining": 84210,
"credits_used_today": 1290,
"concurrency_limit": 10
}Przykłady kodu
curl -s "https://serpcrypto.com/api/v1/credits" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY"import os
import requests
r = requests.get(
"https://serpcrypto.com/api/v1/credits",
headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
timeout=30,
)
r.raise_for_status()
print(r.json()["credits_remaining"])const res = await fetch("https://serpcrypto.com/api/v1/credits", {
headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const { credits_remaining } = await res.json();
console.log(credits_remaining);Jakie błędy może zwrócić API?
Każdy błąd ma treść {"error": {"code": "…", "message": "…"}}. Strona błędów wyjaśnia każdy z nich i pokazuje kod ponowienia.
| HTTP | code | Kiedy występuje | Pobierana opłata |
|---|---|---|---|
| 400 | invalid_parameter | Brakuje wymaganego parametru lub wartość jest poza dozwoloną listą | Nie |
| 401 | invalid_api_key | Klucz jest nieobecny, błędny lub unieważniony | Nie |
| 402 | insufficient_credits | Na Twoim koncie nie ma już kredytów | Nie |
| 429 | concurrency_limit | Na Twoim koncie działa jednocześnie zbyt wiele wyszukiwań | Nie |
| 502 | search_failed | Wyszukiwarka lub pobieranie nie powiodło się dla tego zapytania; spróbuj ponownie | Nie |
| 504 | search_timeout | Brak odpowiedzi na czas; spróbuj ponownie | Nie |
Co dokładnie jest pobierane jako opłata?
- Jedno udane wyszukiwanie = jeden kredyt, na każdej wyszukiwarce, w tym Google Maps i Google Shopping.
- Każda strona wyników to jedno wyszukiwanie. Około 10 wyników organicznych na stronę, tak jak Google serwuje od czasu, gdy we wrześniu 2025 przestało respektować num=100; każda dodatkowa strona to jeden kredyt więcej.
- Błędy są bezpłatne: każda odpowiedź ze statusem HTTP innym niż 200 nie zużywa kredytu.
- Odczyt kredytów jest bezpłatny.
Prepaid kredyty wyszukiwania nigdy nie wygasają: niewykorzystane wyszukiwania pozostają na Twoim koncie, dopóki ich nie wykorzystasz. Pakiety obejmują od 7,50 USD za 10 000 wyszukiwań do 0,30 USD/1K wyszukiwań w największym z nich; zobacz cennik.
Jak powinienem zakodować zapytanie?
Wysyłaj q z kodowaniem URL, jak każdą wartość query string: spacja staje się %20 lub +, a litery z akcentami są kodowane jako UTF-8. curl robi to za pomocą --data-urlencode, Python requests i httpx robią to za pomocą params=, a Node.js robi to za pomocą URLSearchParams.
Zapisz zapytanie dokładnie tak, jak wpisałaby je osoba w polu wyszukiwania. Cudzysłowy, znak minus lub site: pozostają wewnątrz q; wyszukiwarka decyduje, jak je zastosować, tak jak w przypadku odwiedzającego.
Czy API jest wersjonowane?
Tak. Wersja jest częścią ścieżki: /api/v1/. W odpowiedziach wersji 1 mogą pojawiać się nowe pola lub bloki, więc Twój kod powinien ignorować nieznane mu klucze. Usunięcie lub zmiana nazwy pola wiązałoby się z nową wersją w ścieżce, a nie ze zmianą w v1.
Pytania o dokumentację API
Czy mogę wysłać zapytanie POST z ciałem JSON?
Nie w wersji 1: oba endpointy przyjmują zapytania GET z parametrami w query string. Dzięki temu każde wywołanie jest łatwe do odtworzenia za pomocą curl lub przeglądarki i łatwe do zalogowania bez ciała.
Ile wyników zwraca jedno wyszukiwanie?
Około 10 wyników organicznych na stronę, tak jak Google serwuje od czasu, gdy we wrześniu 2025 przestało respektować num=100; każda dodatkowa strona to jeden kredyt więcej. Aby zebrać 30 wyników, wyślij zapytania page=1, page=2 i page=3: trzy wyszukiwania, trzy kredyty.
Co się stanie, gdy skończą mi się kredyty?
Następne wyszukiwanie zwróci 402 insufficient_credits i nie zużyje nic. Kup kolejny pack ze swojego salda na stronie cennika; Twój klucz API nadal działa, a wyszukiwania wznawiają się od razu.
Czy mogę używać tego samego klucza API z kilku serwerów?
Tak. Klucz API nie jest powiązany z adresem IP. Ograniczona jest liczba wyszukiwań uruchomionych jednocześnie na koncie: concurrency_limit w GET /credits podaje tę wartość.