castomAPI
Odbierz klucz
POST /v1/serp/search od 60 tokenów PRO Klucz API SERP

Wykonuje wyszukiwanie na żywo w Google lub YouTube i zwraca…

Wykonuje wyszukiwanie na żywo w Google lub YouTube i zwraca uszeregowane wyniki `searchEngine: "bing"` jest obecnie akceptowany przez schemat, ale zawsze zwraca 503. Microsoft wycofał Bing Search APIs 2025-08-11, zobacz CLAUDE.md "Bing Search API…

POST

Żądanie

  • x-api-key: <your-api-key>
  • Content-Type: application/json

Odpowiedź

{
  "status": "success",
  "query": "royalty free media api",
  "engine": "google",
  "results": [
    {
      "position": 1,
      "title": "castomAPI Media — royalty-free media library",
      "url": "https://media.castomapi.com/",
      "snippet": "Search eleven providers, import with licence and attribution…"
    },
    {
      "position": 2,
      "title": "Openverse",
      "url": "https://openverse.org/",
      "snippet": "An extensive library of free stock photos, images, and audio…"
    },
    {
      "position": 3,
      "title": "Pexels API",
      "url": "https://www.pexels.com/api/",
      "snippet": "Free stock photos and videos for your projects…"
    }
  ],
  "totalResults": 4180000,
  "tokensDeducted": 2
}
Odpowiedź poniżej to makieta zbudowana ze schematu endpointu — żadne żądanie nie opuszcza tej strony. Zmień treść, naciśnij Wyślij, zobacz kształt odpowiedzi. Uruchom naprawdę w panelu →

Co robi

Wyszukiwanie na żywo w Google albo YouTube, z kraju i języka, które wskażesz, zwrócone jako uszeregowane wyniki z tytułem, adresem i fragmentem — surowiec do śledzenia pozycji, odkrywania konkurencji i researchu treści. Koszt rośnie z liczbą żądanych wyników.

Kiedy użyć

Tygodniowy raport pozycji; sprawdzenie, czy opublikowana strona jest zaindeksowana; podanie tematu do FABLS.

Żądanie

Treść

PoleTypWymaganeOpis
countrystringtak
langstringtak
locationstringnie
phrasestringtak
respSizeintegernie
searchEngineenumtakOne of: google, bing.

Przykładowe żądanie

{
  "query": "royalty free media api",
  "country": "pl",
  "language": "en",
  "limit": 3
}

Odpowiedź

PoleTypOpis
geocodedboolean
pagesFetchedinteger
resultsarray<object>
searchEnginestring
statusstring
tokensDeductedinteger

Przykładowa odpowiedź

{
  "status": "success",
  "query": "royalty free media api",
  "engine": "google",
  "results": [
    {
      "position": 1,
      "title": "castomAPI Media — royalty-free media library",
      "url": "https://media.castomapi.com/",
      "snippet": "Search eleven providers, import with licence and attribution…"
    },
    {
      "position": 2,
      "title": "Openverse",
      "url": "https://openverse.org/",
      "snippet": "An extensive library of free stock photos, images, and audio…"
    },
    {
      "position": 3,
      "title": "Pexels API",
      "url": "https://www.pexels.com/api/",
      "snippet": "Free stock photos and videos for your projects…"
    }
  ],
  "totalResults": 4180000,
  "tokensDeducted": 2
}

Błędy

Każdy błąd ma tę samą kopertę: status HTTP, kod maszynowy i jedno zdanie.

400Treść albo parametr nie przeszły walidacji. Tablica details wskazuje pole.
401Brak klucza, klucz cofnięty albo zły nagłówek. Wyślij x-api-key.
402Portfel nie pokrywa tego wywołania. Doładuj albo poczekaj na miesięczny przydział.
404Zasób nie istnieje albo nie jest Twój. Obie sytuacje odpowiadają identycznie i nic nie kosztują.
429Przekroczony limit na minutę dla Twojego planu. Odczekaj i ponów.
5xxUsługa nadrzędna odmówiła albo przekroczyła czas. Wywołanie nie jest rozliczane.

Kod

curl -X POST 'https://app.castomapi.com/v1/serp/search' \
  -H 'x-api-key: <your-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"query": "royalty free media api", "country": "pl", "language": "en", "limit": 3}'
const res = await fetch('https://app.castomapi.com/v1/serp/search', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"query": "royalty free media api", "country": "pl", "language": "en", "limit": 3})
});
const data = await res.json();
console.log(data);
import { request } from 'node:https';

// Node 18+ has fetch built in
const res = await fetch('https://app.castomapi.com/v1/serp/search', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"query": "royalty free media api", "country": "pl", "language": "en", "limit": 3})
});
const data = await res.json();
console.log(data);
import requests

res = requests.post(
    'https://app.castomapi.com/v1/serp/search',
    headers={'x-api-key': '<your-api-key>'},
    json={"query": "royalty free media api", "country": "pl", "language": "en", "limit": 3},
    timeout=30,
)
print(res.json())
<?php
$ch = curl_init('https://app.castomapi.com/v1/serp/search');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['x-api-key: <your-api-key>', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode(['query' => 'royalty free media api', 'country' => 'pl', 'language' => 'en', 'limit' => 3]),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);

Koszt i limity

Ta operacja kosztuje od 60 tokenów. Nieudane wywołanie nigdy nie jest rozliczane. Każde konto dostaje 1000 darmowych tokenów miesięcznie; opłacone saldo nie wygasa. 60 tokenów za każdą pobraną stronę wyników. Na stronie mieści się do 10 wyników, więc respSize 10 kosztuje 60 tokenów, a respSize 100 — do 600. Dostępne w planach PRO i Enterprise: ta operacja zużywa własne klucze lub limity castomAPI. Klucz z planu darmowego dostaje 403 i nie jest rozliczany.

Limity żądań na minutę

Bez klucza10
Free60
Pro300
Enterprise1200

Dokumentacja → Cennik

Pytania

Ile kosztuje Wykonuje wyszukiwanie na żywo w Google lub YouTube i zwraca…?

od 60 tokenów za udane wywołanie, pobierane z portfela po odpowiedzi. Nieudane wywołania są bezpłatne. Każde konto dostaje 1000 darmowych tokenów miesięcznie. 60 tokenów za każdą pobraną stronę wyników. Na stronie mieści się do 10 wyników, więc respSize 10 kosztuje 60 tokenów, a respSize 100 — do 600.

Jak się uwierzytelnić?

Wyślij klucz w nagłówku x-api-key. Jeden klucz obejmuje każdy rozliczany endpoint; niczego nie trzeba włączać osobno.

Czy mogę wysłać nagłówek Authorization: Bearer zamiast klucza?

Nie dla rozliczanego endpointu — te przyjmują wyłącznie nagłówek x-api-key. Tokeny Bearer należą do strony konta: panel i API konta przyjmują sesję JWT, a castomapi-auth wydaje je standardowym uzgodnieniem OAuth2, z grantami authorization code, client credentials i refresh. Opisuje to strona usługi auth.

Jakie są limity?

10 żądań na minutę z jednego IP zupełnie bez klucza, 60 na minutę w planie Free, 300 w Pro, 1200 w Enterprise. Powyżej poziomu bez klucza limit jest na konto, łącznie dla wszystkich endpointów.

OpenAPI: https://app.castomapi.com/docs/json