Bez KYC — bez dowodu, bez selfie, bez dokumentów. Płać kryptowalutą: BTC, USDT, USDC, ETH, SOL, LTC
Język: Polski
Pobierz klucz API

Dokumentacja · API reference

Referencja endpointu wyszukiwania: POST i GET /search

/search uruchamia wyszukiwanie w sieci na żywo, szereguje do 20 wyników i odczytuje strony stojące za pierwszymi z nich. Ta strona wymienia każdy parametr, jego wartość domyślną, limity i wpływ na cenę.

Ostatnia aktualizacja: · 9 min czytania

Szybka odpowiedź

Jakie parametry przyjmuje endpoint wyszukiwania LLMWebSearch?

LLMWebSearch — endpoint /search wymaga tylko q. Parametry opcjonalne określają, ile wyników wraca (max_results), ile stron jest odczytywanych (read), format i długość treści, news lub web, zakres czasowy, kraj i język oraz domeny do zachowania lub odrzucenia. Odczyt do 3 stron kosztuje 1 kredyt, od 1,20 USD/1K wyszukiwań według stanu na październik 2026. Bez KYC; płatność kryptowalutą.

/search at a glance

MetodyPOST z ciałem JSON lub GET z tymi samymi nazwami w query string
URLhttps://llmwebsearch.com/api/v1/search
Wymaganeq: od 1 do 400 znaków; operatory wyszukiwania są przekazywane tak, jak zostały zapisane
Wartości domyślne5 wyników, odczyt pierwszych 3, Markdown do 6 000 znaków na stronę
RozliczanieJeden kredyt opłaca jedno wyszukiwanie: do 20 wyników z rankingiem, przy czym strony z pierwszych 3 są odczytywane i zwracane jako Markdown. Odczyt od 4 do 10 stron to 2 kredyty. Wywołanie zakończone błędem nic nie kosztuje
WynikiWyniki pochodzą z wyszukiwania w sieci na żywo, uruchamianego w momencie Twojego wywołania, w kolejności, w jakiej szereguje je wyszukiwarka; nic nie jest serwowane ze starego indeksu
FiltryWybierz kraj i język wyników, zakres czasu (ostatni dzień, tydzień, miesiąc lub rok), wyniki web lub news oraz domeny do uwzględnienia lub wykluczenia
Czytnik stronLLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)

Wyszukaj w sieci i odczytaj najlepsze wyniki (POST)

POST/api/v1/search

Uruchamia wyszukiwanie w sieci na żywo i zwraca uszeregowane wyniki. Strony pierwszych read wyników są pobierane równolegle, a ich główna treść jest zwracana w content. Przykład pyta, jak rotować klucze API; tytuły, daty i wartości są ilustracyjne.

Uwierzytelnianie: klucz API w nagłówku Authorization: Bearer API_KEY.

Treść zapytania

PoleTypWymaganeOpis
qstringTakZapytanie wyszukiwania, od 1 do 400 znaków. Cudzysłowy i operatory takie jak site: są zachowywane tak, jak zostały zapisane.
max_resultsintegerNieLiczba uszeregowanych wyników, od 1 do 20. Domyślnie 5.
readintegerNieIle z pierwszych wyników jest odczytywanych i zwracanych wraz z treścią, od 0 do 10. Domyślnie 3. Od 4 w górę wywołanie kosztuje 2 kredyty.
formatstringNiemarkdown (domyślnie) lub text dla treści strony.
max_charsintegerNieLimit długości treści każdej strony, od 500 do 50 000 znaków. Domyślnie 6000.
topicstringNieweb (domyślnie) lub news.
time_rangestringNieday, week, month lub year. Brak wartości domyślnej: dowolna data.
countrystringNieDwuliterowy kod kraju (ISO 3166-1 alpha-2) określający, gdzie uruchamiane jest wyszukiwanie. Domyślnie us.
languagestringNieJęzyk wyników, taki jak en, de lub pt-BR. Domyślnie en.
include_domainsstring[]NieDo 20 domen; zachowywane są tylko wyniki z tych domen i ich subdomen.
exclude_domainsstring[]NieDo 20 domen, których wyniki są odrzucane.
Przykład: five results, the top three read as Markdown
{
  "q": "how to rotate api keys without downtime",
  "max_results": 5,
  "read": 3,
  "max_chars": 6000
}
Przykład: news of the past week from two sites, nothing read
{
  "q": "open source license change",
  "topic": "news",
  "time_range": "week",
  "include_domains": [
    "news.example.com",
    "example.org"
  ],
  "read": 0
}

Odpowiedź 200

{
  "query": "how to rotate api keys without downtime",
  "created_at": "2026-10-22T10:15:04Z",
  "credits_used": 1,
  "results": [
    {
      "position": 1,
      "title": "Rotating API keys",
      "url": "https://docs.example.com/security/key-rotation",
      "host": "docs.example.com",
      "snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
      "published_at": "2026-09-30",
      "content_status": "ok",
      "content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
      "word_count": 948
    },
    {
      "position": 2,
      "title": "Key rotation checklist",
      "url": "https://blog.example.org/key-rotation-checklist",
      "host": "blog.example.org",
      "snippet": "Keep two keys active during the switch and alert on the old one.",
      "content_status": "blocked_by_robots"
    },
    {
      "position": 3,
      "title": "Secrets management basics",
      "url": "https://security.example.net/secrets-basics",
      "host": "security.example.net",
      "snippet": "Never commit keys to a repository.",
      "published_at": "2026-06-12",
      "content_status": "ok",
      "content": "# Secrets management basics\n\n**Never** commit keys to a repository...",
      "word_count": 1310
    },
    {
      "position": 4,
      "title": "API key best practices",
      "url": "https://dev.example.com/api-key-best-practices",
      "host": "dev.example.com",
      "snippet": "Scope each key to one service and one environment.",
      "content_status": "not_requested"
    }
  ]
}

Przykłady kodu

curl
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3}'
Python
import os
import requests

resp = requests.post(
    "https://llmwebsearch.com/api/v1/search",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    json={"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3},
    timeout=60,
)
resp.raise_for_status()
for r in resp.json()["results"]:
    print(r["position"], r["content_status"], r["url"])
Node.js
const res = await fetch('https://llmwebsearch.com/api/v1/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ q: 'how to rotate api keys without downtime', max_results: 5, read: 3 }),
});
const { results } = await res.json();
for (const r of results) console.log(r.position, r.content_status, r.url);

Wyszukaj w sieci (GET)

GET/api/v1/search

To samo wyszukiwanie z parametrami w query string, zakodowanymi w URL. Listy takie jak include_domains zapisuje się jako jedną wartość oddzieloną przecinkami. Przydatne do szybkiego testu lub dla narzędzi, które wysyłają tylko żądania GET. Przykład prosi wyłącznie o wyniki (read=0).

Uwierzytelnianie: klucz API w nagłówku Authorization: Bearer API_KEY.

Parametry

NazwaWTypWymaganeOpis
qquerystringTakZapytanie wyszukiwania zakodowane w URL, od 1 do 400 znaków.
max_resultsqueryintegerNieOd 1 do 20. Domyślnie 5.
readqueryintegerNieOd 0 do 10. Domyślnie 3; 4 lub więcej kosztuje 2 kredyty.
formatquerystringNiemarkdown (domyślnie) lub text.
max_charsqueryintegerNieOd 500 do 50 000 na stronę. Domyślnie 6000.
topicquerystringNieweb (domyślnie) lub news.
time_rangequerystringNieday, week, month lub year.
countryquerystringNieKod ISO 3166-1 alpha-2. Domyślnie us.
languagequerystringNieKod języka. Domyślnie en.
include_domainsquerystringNieLista rozdzielona przecinkami, do 20 domen.
exclude_domainsquerystringNieLista rozdzielona przecinkami, do 20 domen.
api_keyquerystringNieTwój klucz, gdy nie wysyłasz nagłówka Authorization.

Odpowiedź 200

{
  "query": "postgres connection pooling",
  "created_at": "2026-10-22T10:21:47Z",
  "credits_used": 1,
  "results": [
    {
      "position": 1,
      "title": "Connection pooling explained",
      "url": "https://docs.example.com/db/pooling",
      "host": "docs.example.com",
      "snippet": "A pool keeps a few database connections open and lends them to requests.",
      "content_status": "not_requested"
    },
    {
      "position": 2,
      "title": "Sizing a connection pool",
      "url": "https://blog.example.org/pool-size",
      "host": "blog.example.org",
      "snippet": "Start small: the right size depends on cores and disk, not on traffic.",
      "published_at": "2026-03-04",
      "content_status": "not_requested"
    }
  ]
}

Przykłady kodu

curl
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=postgres connection pooling" \
  -d max_results=10 -d read=0
Python
import os
import requests

resp = requests.get(
    "https://llmwebsearch.com/api/v1/search",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    params={"q": "postgres connection pooling", "max_results": 10, "read": 0},
    timeout=60,
)
print([r["url"] for r in resp.json()["results"]])
Node.js
const params = new URLSearchParams({ q: 'postgres connection pooling', max_results: '10', read: '0' });
const res = await fetch(`https://llmwebsearch.com/api/v1/search?${params}`, {
  headers: { Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}` },
});
console.log((await res.json()).results.map((r) => r.url));

Jak uzyskać wyniki bez jakiejkolwiek treści strony?

Ustaw read na 0. Każdy wynik wraca wtedy z tytułem, URL, hostem, snippetem i datą oraz content_status: "not_requested". Odpowiedź jest znacznie mniejsza, co pomaga, gdy agent musi tylko wybrać, które linki się liczą.

Cena pozostaje 1 kredyt, tyle samo co odczyt do 3 stron. Częsty schemat to zapytanie read=0, żeby zawęzić listę, a potem wywołanie extract na dwóch lub trzech URL-ach wybranych przez model.

Kiedy wyszukiwanie kosztuje 2 kredyty?

Gdy read wynosi od 4 do 10. Odczyt większej liczby stron wymaga więcej pracy po naszej stronie, więc cena rośnie jednorazowo i pozostaje na poziomie 2 kredytów aż do maksimum 10 stron.

credits_used w każdej odpowiedzi pokazuje, ile kosztowało wywołanie. Strona, której nie udało się odczytać z powodu reguły robots.txt lub odmowy, nie obniża ani nie podnosi tej ceny. Jeśli przez większość czasu potrzebujesz tylko kilku pełnych stron, zostaw read na 3 i wywołaj /extract dla rzadkiej dodatkowej strony.

Jak wyszukiwać najnowsze wiadomości?

Wyślij topic: "news" i time_range. Wyniki pochodzą wtedy z artykułów prasowych, a time_range zachowuje tylko te z ostatnich day, week, month lub year. published_at jest uzupełniane, gdy artykuł lub wynik wyszukiwania podaje datę.

Ten sam filtr świeżości działa z topic: "web". Przydaje się przy pytaniach o ostatnie premiery lub zmiany cen, gdzie stara strona wprowadziłaby model w błąd.

Wiadomości z ostatniego tygodnia, odczyt 3 najlepszych artykułów
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database release security fix", "topic": "news", "time_range": "week", "read": 3}'

Jak ograniczyć wyniki do wybranych stron?

Wypisz je w include_domains, do 20 pozycji. Zachowywane są tylko wyniki, których host jest jedną z tych domen lub jedną z ich subdomen: example.com pasuje też do docs.example.com. Użyj exclude_domains w drugą stronę, na przykład aby usunąć własną stronę z wyników.

W treści POST oba pola są tablicami JSON. W żądaniu GET zapisz je jako jedną wartość rozdzieloną przecinkami. Samo zapytanie może też zawierać operator site:; jest przekazywane do wyszukiwania tak, jak zostało zapisane.

Co zmieniają kraj i język?

country ustawia, gdzie odbywa się wyszukiwanie, za pomocą dwuliterowego kodu, np. us, de lub br. Rankingi różnią się w zależności od kraju, zwłaszcza w przypadku usług lokalnych, cen i regulacji. language ustawia język wyników, np. en, fr lub pt-BR.

Oba domyślnie ustawione są na Stany Zjednoczone i angielski. Ustaw je razem, gdy agent pracuje dla użytkowników na jednym rynku: niemiecki użytkownik pytający o przepisy podatkowe oczekuje country: "de" i language: "de".

Ile tekstu strony wraca?

Do max_chars znaków na stronę, domyślnie 6000, w zakresie od 500 do 50 000. Limit chroni okno kontekstu modelu: trzy strony po 6000 znaków to około 4500 tokenów po angielsku.

word_count liczy cały wyodrębniony tekst, przed przycięciem, więc możesz sprawdzić, kiedy strona została skrócona. Gdy odpowiedź wymaga jednego długiego dokumentu, najpierw wyszukaj z niskim limitem, a potem pobierz tylko tę stronę przez /extract z wyższym limitem. Wolna strona nie jest czekana w nieskończoność: po 15 sekundach wraca jako fetch_timeout, bez treści.

Endpoint wyszukiwania: najczęstsze pytania

Czy używać POST czy GET?

POST w kodzie, bo tablice JSON i długie zapytania są prostsze w treści żądania. GET nadaje się do szybkiego testu w terminalu lub w narzędziu, które wysyła tylko query stringi. Oba zwracają tę samą odpowiedź i kosztują tyle samo.

Czy mogę poprosić o więcej niż 20 wyników?

Nie. 20 to maksimum na wywołanie. Agentom rzadko potrzeba więcej: drugie wyszukiwanie z przeformułowanym zapytaniem zwykle daje lepsze źródła niż długa lista.

Czy strony są czytane jedna po drugiej?

Nie, równolegle. Strona, która nie odpowie w ciągu 15 sekund, wraca bez treści, jako fetch_timeout, więc jedna wolna witryna nie blokuje całej odpowiedzi.

Która wyszukiwarka generuje wyniki?

Wyniki pochodzą z wyszukiwania w sieci na żywo, uruchamianego w momencie Twojego wywołania, w kolejności, w jakiej szereguje je wyszukiwarka; nic nie jest serwowane ze starego indeksu. Nie ujawniamy, którzy dostawcy zewnętrzni obsługują wyszukiwanie.

Od 1,20 USD/1K wyszukiwań · bez KYC

Pobierz klucz API