# Przepisy curl i jq dla web search API

> Web search API: wyszukiwanie, lista źródeł, zapis stron jako Markdown, filtrowanie newsów i domen, odczyt URL, sprawdzanie kredytów. Bez KYC.

- URL: https://llmwebsearch.com/pl/docs/curl/
- Ostatnia aktualizacja: 2026-10-22
- Wydawca: LLMWebSearch (https://llmwebsearch.com)

Każda funkcja API działa z terminala. Te przepisy używają `curl` do wywołania API i `jq` do ukształtowania JSON: przydatne do przetestowania zapytania przed kodowaniem, do skryptów powłoki i do zadań cron.

**Szybka odpowiedź — Jak używać web search API z wiersza poleceń?**

Wyślij ciało JSON z `curl -d` do `https://llmwebsearch.com/api/v1/search`, swój klucz w nagłówku `Authorization: Bearer`, a odpowiedź przekieruj do `jq`. **LLMWebSearch** zwraca uszeregowane wyniki z 3 najlepszymi stronami jako Markdown, więc jedna linia może wylistować źródła lub zapisać strony do plików. Wyszukiwanie kosztuje 1 kredyt, od 1,20 USD/1K wyszukiwań według stanu na październik 2026. Bez KYC; płatność kryptowalutą.

## Jak skonfigurować terminal raz na zawsze?

Wyeksportuj klucz w powłoce, żeby nie trafiał do wpisywanych poleceń ani do historii. Poniższe przepisy odczytują go jako `$LLMWEBSEARCH_API_KEY`. Potrzebujesz też `jq`, który większość menedżerów pakietów instaluje pod tą nazwą.

Wszystkie przepisy zakładają powłokę POSIX, taką jak bash lub zsh. W Windows Git Bash lub WSL uruchamiają je bez zmian.

*Ustaw klucz i sprawdź saldo (bezpłatnie)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## Jak wylistować źródła wyszukiwania?

Uruchom wyszukiwanie z `read` ustawionym na `0` i wypisz jedną linię na wynik: pozycja, host i URL. To kosztuje 1 kredyt i w sekundę pokazuje, jakie źródła wywołuje pytanie. Dobry sposób na dostrojenie sformułowania zapytania, zanim użyje go agent.

*Jedna linia na wynik*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
  | jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'
```

## Jak zapisać odczytane strony?

Zatrzymaj wyniki, których `content_status` to `ok`, i zapisz każdy `content` do osobnego pliku. Poniższy przepis zapisuje `01.md`, `02.md` i tak dalej, każdy zaczynając od URL źródła. jq wybiera wyniki, a pętla powłoki zapisuje pliki.

*Zapisz każdą stronę jako Markdown*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "read": 3}' > search.json

jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
  jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
    search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.md
```

## Jak wyszukiwać newsy z kilku witryn?

Dodaj `topic`, `time_range` i `include_domains` do ciała zapytania. Przepis zachowuje newsy z ostatniego tygodnia na dwóch domenach i wypisuje datę obok każdego tytułu, co wystarczy, by śledzić temat z zadania cron.

*Newsy z ostatniego tygodnia z dwóch domen*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
  | jq -r '.results[] | "\(.published_at // "no date")  \(.title)  \(.url)"'
```

## Jak używać formy GET?

Użyj `curl -G` z `--data-urlencode` dla zapytania, żeby spacje i symbole zostały zakodowane za Ciebie. Listy takie jak `include_domains` stają się jedną wartością rozdzieloną przecinkami. GET jest wygodny do szybkiego testu; skrypty, które rosną, powinny przejść na POST.

*GET /search*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=pgbouncer transaction mode" \
  -d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
  | jq -r '.results[0].content // .results[0].snippet'
```

## Jak odczytać URL, które już mam?

Wyślij je do `/extract` jako tablicę JSON od 1 do 20 adresów. Odczyt stron, których adresy URL już masz, kosztuje 1 kredyt za każdą rozpoczętą grupę 3 stron zwróconych z treścią, do 20 adresów URL na wywołanie; adresy URL odrzucone lub nieudane nie są liczone. Przepis wypisuje każdy URL z jego statusem i liczbą słów, co od razu pokazuje, które strony witryna pozwoliła nam odczytać.

*POST /extract*

```bash
curl -s "https://llmwebsearch.com/api/v1/extract" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
  | jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'
```

## Jak zobaczyć błąd, gdy wywołanie się nie powiedzie?

Wypisz status HTTP za pomocą `-w` i zachowaj treść odpowiedzi: błędy wracają jako JSON z `code` i `message`. Skrypt może wtedy rozgałęziać się na podstawie statusu, na przykład czekając i ponawiając tylko przy `429`, `502` lub `504`. Żaden z tych błędów nie zużywa kredytu.

*Kod statusu i treść błędu*

```bash
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "test query"}')
if [ "$status" != "200" ]; then
  echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
fi
```

## curl: najczęstsze pytania

### Dlaczego moja treść JSON zwraca błąd invalid_parameter?

Zwykle to problem z cudzysłowami. W bashu obejmij treść pojedynczymi cudzysłowami, żeby cudzysłowy podwójne w środku pozostały nienaruszone, i sprawdź ją za pomocą `echo '…' | jq .` przed wysłaniem.

### Czy mogę przekazać klucz w URL?

Tak, za pomocą `-d api_key=…` w formie GET. Nagłówek jest bezpieczniejszy, bo historia powłoki i logi proxy zapisują URLe.

### Czy nieudane wywołanie curl kosztuje kredyt?

Nie. Błędy HTTP nigdy nie zużywają kredytów. Płatne jest tylko wyszukiwanie, które zwraca wyniki, jak pokazuje `credits_used`.

---

LLMWebSearch: LLMWebSearch to web search API dla agentów AI, który zwraca uszeregowane wyniki wraz z treścią najlepszych stron w formacie Markdown, z płatnością kryptowalutą i bez przesyłania dokumentu tożsamości. Kredyty przedpłacone od 1,20 USD/1K wyszukiwań nigdy nie wygasają. Bez KYC — bez dokumentu, bez selfie, bez zaświadczeń. Płatność kryptowalutą.
