Dokumentacja

matura.lol to wyszukiwarka zadań szkolnych i egzaminacyjnych. Poniżej opisane są dwa sposoby dostępu do danych: REST API oraz serwer MCP (Model Context Protocol). Oba są publiczne, tylko do odczytu i korzystają z tej samej logiki co interfejs.

REST API

Bazowy adres: https://matura.lol. API nie wymaga klucza, jest tylko do odczytu, a CORS jest otwarty (Access-Control-Allow-Origin: *).

Metoda Ścieżka Opis
GET /api Katalog endpointów (JSON)
GET /api/openapi.json Pełny schemat OpenAPI 3
GET /api/health Liczba rekordów w korpusie
GET /api/facets Przedmioty, kategorie, poziomy, typy zadań, lata (+ liczby)
GET /api/search?q=… Wyszukiwanie pełnotekstowe
GET /api/paper/{paper_id} Metadane arkusza i wszystkie jego zadania
GET /api/question/{question_id} Jedno zadanie: treść, klucz/rozwiązanie, strony źródłowe
GET /pdf/{paper_id} Oryginalny arkusz PDF
GET /source/{paper_id}/{page} Render strony źródłowej (PNG)

Parametry /api/search

q (słowa po polsku, przedrostkowo — ciag pasuje do ciąg; przeszukiwane są też rozwiązania) oraz opcjonalnie subject, category, level (podstawowa/rozszerzona), ptype, topic (dział z /api/facets), has (solution/answer — tylko zadania z rozwiązaniem lub kluczem), year, sort (relevance/year), page i limit (maks. 100). Zduplikowane (błędnie opisane) arkusze są domyślnie ukryte; include_duplicates=1 je pokaże.

curl 'https://matura.lol/api/search?q=ciag%20geometryczny&subject=matematyka&year=2024&limit=20'

Liczenie: count

Dodaj count=subject|category|level|ptype|year|month|variant|topic, żeby zamiast listy wyników dostać liczby dla każdej wartości. Odpowiedź zawiera wtedy tablicę counts z polami id, label i count, a total to suma dopasowanych zadań. Wszystkie filtry (q, subject, category, …) działają jak zwykle, więc można policzyć np. trend roczny dla jednego przedmiotu. Gotowy interfejs: matura.lol/statystyka.

curl 'https://matura.lol/api/search?subject=matematyka&category=matura&count=year'

Składnia zapytań (operatory)

W polu wyszukiwania działają operatory w stylu SearXNG. Można ich też użyć w /api/search?q=, więc nadają się do linków i skryptów.

!bang — filtr przedmiotu, kategorii, poziomu i typu

Poprzedź słowo znakiem !, aby ustawić filtr. Operatory można łączyć, np. !mat !pr funkcje szuka zadań z matematyki na poziomie rozszerzonym. !matura (kategoria) to nie to samo co !matematyka (przedmiot). Krótsze i dłuższe formy są równoważne (!mat = !matematyka).

Przykład Znaczenie
!mat, !matematyka przedmiot: matematyka
!bio, !chemia, !fiz, !geo przedmiot: biologia, chemia, fizyka, geografia
!hist, !wos, !pol, !ang przedmiot: historia, WOS, język polski, język angielski
!inf, !fil, !zawodowy przedmiot: informatyka, filozofia, egzamin zawodowy
!matura, !probna kategoria: matura, matura próbna
!osmo, !gim kategoria: egzamin ósmoklasisty, egzamin gimnazjalny
!informator, !zbiory kategoria: informator maturalny, zbiory zadań
!podrecznik, !skul źródło: zadania z podręczników skul.pl (bez demotacji w wynikach; bez banga podręczniki trafiają niżej niż zadania egzaminacyjne)
!pp, !pr poziom: podstawowa, rozszerzona
!zamkniete, !otwarte, !tf typ zadania: zamknięte, otwarte, prawda/fałsz
!odpowiedz, !rozwiazanie tylko zadania z kluczem odpowiedzi / rozwiązaniem
!najnowsze sortowanie od najnowszych
!pdf, !arkusz pokaż też karty całych arkuszy do pobrania

Nieznany bang (np. !cokolwiek) jest traktowany jak zwykłe słowo. Pełną listę wartości filtrów znajdziesz w /api/facets, a podpowiedzi bangów zwraca /api/suggest.

Pozostałe operatory

https://matura.lol/?q=!mat !pr "ciąg geometryczny" -pochodna
https://matura.lol/lucky?q=!! fotosynteza

Wyszukiwarka w przeglądarce (OpenSearch)

Możesz dodać matura.lol jako wyszukiwarkę w przeglądarce: opis OpenSearch jest pod /opensearch.xml, a podpowiedzi dostarcza /api/suggest. Wiele przeglądarek wykrywa go automatycznie z <link rel="search"> na stronie głównej.

Agregacje i podświetlanie (styl Elasticsearch)

Do /api/search możesz dodać aggs=<json>, żeby policzyć rozkłady po tym samym zbiorze wyników. Obsługiwane są terms (np. przedmioty), histogram / date_histogram (np. lata), stats, cardinality, range, percentiles oraz zagnieżdżony filter. Odpowiedź zawiera obiekt aggregations w formacie Elasticsearch (buckets/doc_count/values), a każdy kubełek terms ma też czytelną etykietę label.

curl 'https://matura.lol/api/search?subject=matematyka&aggs=%7B%22lata%22%3A%7B%22histogram%22%3A%7B%22field%22%3A%22year%22%2C%22interval%22%3A5%7D%7D%7D'

highlight=1, highlight=text,solution albo obiekt JSON dodaje do każdego wyniku pole highlight (pole → lista fragmentów z <em>). fields=id,text,answer zawęża zwracane pola wyniku (odpowiednik _source); id i paper_id są zawsze zwracane.

MCP (agenci i asystenci)

Serwer MCP działa pod https://matura.lol/mcp (streamable HTTP, bez sesji, odpowiedzi JSON). Udostępnia narzędzia: search_questions, get_question, get_paper i list_facets. Korzystają one z tej samej logiki co API, więc wyniki są zawsze spójne.

claude mcp add --transport http matura https://matura.lol/mcp

Lokalnie, po stdio (np. Claude Desktop, po zainstalowaniu projektu):

{
  "mcpServers": {
    "matura": {"command": "uv", "args": ["run", "search-matugen", "mcp"]}
  }
}

Mniej żądań

Odkrywanie dla agentów

Uwagi o korpusie i źródłach

Tryb nauki

Nauka na stronie głównej (fiszki z powtórkami SM-2, szybka powtórka i trening przekrojowy) działa w całości w Twojej przeglądarce. Jeśli ją wyłączyłeś, możesz włączyć ją ponownie tutaj.

Panele wyników i statystyk

Recap, Podobne zadania oraz Statystyki ruchu możesz ukryć przyciskiem ×. Jeśli je ukryjesz, włączysz je ponownie tutaj (odśwież stronę po zmianie).