Sejm API w PHP
Sejm API to oficjalne, publiczne REST‑owe API Kancelarii Sejmu, umożliwiające dostęp do szerokiego zakresu danych o działalności Sejmu RP (X kadencja). Działa bez logowania i autoryzacji – wystarczy zapytać odpowiedni endpoint i otrzymać dane w JSON lub pliki
Obsługa API w PHP jest banalna (nie wymaga autoryzacji)
<?php
namespace Sejm;
class Client
{
private $baseUrl = 'https://api.sejm.gov.pl/sejm/term10/';
public function request($endpoint='', $params = [], $accept = 'application/json')
{
$url = $this->baseUrl . $endpoint;
if (!empty($params)) {
$url .= '?' . http_build_query($params);
}
$headers = [
'Accept: ' . $accept
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => $headers,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$error = curl_error($curl);
curl_close($curl);
// Obsługa błędów cURL
if ($error) {
throw new \Exception("cURL Error: " . $error . ': ' . $endpoint . '[ ' . print_r($params, true) . " ]");
}
$res = json_decode($response, true);
// Wszystko OK
if ($httpCode == 200) {
return $res;
}
$msg = match($httpCode) {
400 => 'Bad Request',
404 => 'Not Found',
default => 'Unknown status code',
};
throw new \Exception(
$msg . ': ' . $endpoint . '[ ' . print_r($params, true) . " ]\n\nResponse: " . print_r($res, true),
$httpCode
);
}
}
?>Skrypt z przykładem do pobrania z GitHub.
Oficjalna dokumentacja – https://api.sejm.gov.pl/
Swagger UI – https://api.sejm.gov.pl/
Co oferuje API?
- 📋 Listy i szczegóły posłów
- 🏛️ Kluby i koła poselskie
- 👥 Komisje sejmowe i materiały z posiedzeń
- 🗳️ Głosowania – zbiorcze i szczegółowe
- 📝 Druki sejmowe i załączniki
- ❓ Interpelacje i zapytania poselskie (wraz z odpowiedziami)
- 🎥 Transmisje i wypowiedzi
- 🌍 Grupy bilateralne
🔍 Główne endpointy
1. Kadencja
GET /sejm/term{kadencja} – informacje o bieżącej kadencji (np. "https://api.sejm.gov.pl/sejm/term10")
2. Posłowie
GET /sejm/term10/MP– pełna lista posłów (aktualnych i byłych)GET /sejm/term10/MP/{leg}– dane posła (np./1)…/photooraz…/photo-mini– zdjęcia w różnych rozdzielczościach
3. Głosowania
GET /sejm/term10/votings/{posiedzenie}– lista głosowań danego posiedzeniaGET .../votings/{posiedzenie}/{votingNum}– szczegóły konkretnego głosowaniaGET /sejm/term10/MP/{leg}/votings/{posiedzenie}/{data}– jak głosował dany poseł
4. Druki
GET /sejm/term10/prints– lista wszystkich druków sejmowychGET /sejm/term10/prints/{num}– szczegóły danego druku, w tym dokumenty, daty i linki.GET .../prints/{num}/{attachment}– dostęp do konkretnych plików PDF
5. Kluby i koła
GET /sejm/term10/clubs– lista klubów/ kół poselskich (ID, nazwy, kontakt, liczebność) .GET /.../clubs/{club}– szczegóły konkretnego klubu, w tym logo (.../logo) .
6. Komisje
GET /sejm/term10/committees– lista komisjiGET /.../committees/{code}/sittings– wszystkie posiedzenia komisji.…/{num}/htmllub/pdf– akta w HTML lub PDF
7. Interpelacje i zapytania poselskie
GET /sejm/term10/interpellationsi/writtenQuestions– dostęp do zapytań z filtrowaniem, stronicowaniem.GET /.../{num}– szczegółowe dane, listy odpowiedzi i załączniki (PDF, HTML odpowiedzi)
8. Inne
- Transmisje –
GET /videos/{unid} - Grupy bilateralne – lista i szczegóły grup
- Wypowiedzi z posiedzeń – np.
proceedings/{num}/{date}/transcripts
🔧 Zastosowania w praktyce
- Tworzenie narzędzi do śledzenia aktywności poselskiej
- Aplikacje informacyjne – np. wyszukiwanie druków lub interpelacji
- Analizy statystyczne, np. frekwencja posłów, wyniki głosowań, efektywność klubów
- Blogi i serwisy informacyjne – embedowanie wypowiedzi lub transmisji
Do pobrania
Skrypt do pobrania z GitHub.

