Nie wiesz co to API? Za 10 minut będziesz pobierać polskie adresy w Pythonie. Żadnej wiedzy technicznej nie wymagamy.
Załóż darmowe konto →API to skrót od Application Programming Interface — czyli sposób, w jaki programy rozmawiają ze sobą. Brzmi skomplikowanie, ale w praktyce jest to coś, czego używasz na co dzień.
Wyobraź sobie restaurację. Ty (Twój program) siedzisz przy stoliku i chcesz pizzę. Nie idziesz do kuchni — zamiast tego mówisz kelnerowi (API) czego chcesz. Kelner idzie do kuchni (serwera z danymi), odbiera pizzę (dane adresowe) i przynosi Ci z powrotem.
Wysyłasz do nas: "Co wiesz o adresie Kościuszki 14 Kraków?"
My odpowiadamy: kod pocztowy, współrzędne GPS, kod TERYT, ID punktu w PRG — wszystko w ustandaryzowanym formacie, w ułamku sekundy.
Każda komunikacja z API składa się z dwóch etapów: zapytanie (request) i odpowiedź (response). Dokładnie jak rozmowa.
Cały ten proces trwa zwykle poniżej 100 milisekund — szybciej niż mrugnięcie okiem.
Co to JSON? To prosty format tekstu — lista par "nazwa: wartość". Twój program potrafi go odczytać w jednej linii kodu. Przykład zobaczysz za chwilę.
Żeby serwer wiedział, kto pyta — i żeby mógł naliczać limity — każde zapytanie musi zawierać klucz API. To długi ciąg liter i cyfr, który jest przypisany do Twojego konta.
sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
Ważne: klucz API jest jak hasło. Nie wrzucaj go do publicznych repozytoriów (GitHub), nie udostępniaj. Jeśli wycieknie — od razu wygeneruj nowy w panelu klienta.
Wejdź na api.adresy.app/auth/register. Potrzebujesz tylko adresu email.
W Panelu klienta → Klucze API kliknij "Generuj nowy klucz". Pojawi się Twój unikalny klucz — skopiuj go.
Klucz dołączasz do każdego zapytania jako parametr api_key=. Poniżej pokażemy jak dokładnie.
Zapytanie do API to zwykły adres URL — taki jak w przeglądarce, tylko z danymi. Rozbijmy go na części:
Możesz to otworzyć prosto w przeglądarce — wklej URL, podmień klucz, naciśnij Enter. Zobaczysz surowy JSON.
Przetestuj teraz — wejdź na api.adresy.app i wpisz adres w wyszukiwarce, lub otwórz ten link po wklejeniu swojego klucza.
Odpowiedź przychodzi jako JSON — możesz go czytać jak słownik: każde pole ma nazwę i wartość. Oto przykład dla zapytania o "Kościuszki 14 Kraków":
{
"results": [{
"input": "Marszalkowska 1 Warszawa",
"status": "matched",
"match": {
"ulica_norm": "ul. Marszałkowska",
"nr_budynku": "1",
"miejscowosc": "Warszawa",
"wojewodztwo": "MAZOWIECKIE",
"kod_pocztowy":"00-624",
"dzielnica": "Śródmieście",
"lat": 52.2143,
"lon": 21.0210,
"teryt_simc": "0919810",
"teryt_ulic": "12400",
"id_prg": "PL.PZGIK.200_ed1b481b-...",
"score": 1.0
}
}]
}
Wpisz dowolny polski adres i kliknij Szukaj. Wyślemy zapytanie do API i zobaczysz prawdziwą odpowiedź.
Jeśli masz w bazie kody TERYT (SIMC, ULIC) i chcesz je zamienić na czytelne adresy — jest do tego dedykowany endpoint. Przyjmuje kod w trzech formatach i zwraca pełną hierarchię: województwo → powiat → gmina → miejscowość → dzielnica → ulica → numer → kod pocztowy.
?simc=0986283
?ulic=19357
?simc=0986283%2319357%231
# Zdekoduj listę kodów SIMC z bazy danych import httpx BASE = "https://api.adresy.app/api/v1" KEY = "sk_live_twoj_klucz" kody_simc = ["0986283", "0950463", "0918123"] # Wrocław, Kraków, Warszawa for simc in kody_simc: r = httpx.get(f"{BASE}/teryt/decode", params={"simc": simc}, headers={"Authorization": f"Bearer {KEY}"}) d = r.json() if d["found"]: print(f"{simc}: {d['miejscowosc']}, pow. {d['powiat']}, woj. {d['wojewodztwo']}") if d.get("dzielnice"): print(f" Dzielnice: {', '.join(x['dzielnica_nazwa'] for x in d['dzielnice'][:3])}...")
W zakładce Narzędzia → Dekoduj TERYT i współrzędne na stronie głównej możesz dekodować kody interaktywnie — bez pisania kodu. Obsługuje też format SIMC-ULIC-NR używany w API dopasowania.
Masz Pythona? Poniższy skrypt pobiera dane adresowe w kilku linijkach. Biblioteka requests jest standardem — pewnie już ją masz.
# Krok 1: zainstaluj bibliotekę (tylko raz) # pip install requests import requests # Krok 2: wpisz swój klucz API API_KEY = "wpisz_tu_swoj_klucz" # Krok 3: wyślij zapytanie odpowiedz = requests.get( "https://api.adresy.app/api/v1/match", params={ "q": "Kościuszki 14 Kraków", "api_key": API_KEY, } ) # Krok 4: odczytaj wynik dane = odpowiedz.json() wynik = dane["results"][0] # pierwszy (i jedyny) wynik dopasowanie = wynik["match"] print(f"Status: {wynik['status']}") print(f"Ulica: {dopasowanie['ulica_norm']} {dopasowanie['nr_budynku']}") print(f"Kod pocztowy: {dopasowanie['kod_pocztowy']}") print(f"GPS: {dopasowanie['lat']}, {dopasowanie['lon']}")
Wynik działania skryptu:
Status: matched Ulica: ul. Kościuszki 14 Kod pocztowy: 30-105 GPS: 50.0614, 19.9356
Masz listę adresów do sprawdzenia? Prosta pętla wystarczy:
import requests import time API_KEY = "wpisz_tu_swoj_klucz" adresy = [ "Kościuszki 14 Kraków", "Marszałkowska 1 Warszawa", "Świdnicka 8/10 Wrocław", ] for adres in adresy: resp = requests.get( "https://api.adresy.app/api/v1/match", params={"q": adres, "api_key": API_KEY} ) wynik = resp.json()["results"][0] if wynik["status"] == "matched": kod = wynik["match"]["kod_pocztowy"] print(f"✓ {adres} → {kod}") else: print(f"✗ {adres} → {wynik['status']}") time.sleep(0.05) # krótka przerwa — szanuj limity
Wskazówka: na planie Starter możesz wysyłać 200 zapytań na minutę. Dla dużych plików (tysiące adresów) możesz też skorzystać z wbudowanego narzędzia do importu plików CSV/Excel na stronie głównej.
API zawsze zwraca kod HTTP. Trzy sytuacje, które warto obsłużyć:
resp = requests.get( "https://api.adresy.app/api/v1/match", params={"q": adres, "api_key": API_KEY} ) if resp.status_code == 200: wynik = resp.json()["results"][0] # wszystko OK — przetwarzaj dane elif resp.status_code == 401: print("Błędny klucz API — sprawdź api_key=") elif resp.status_code == 429: print("Za dużo zapytań — poczekaj chwilę") time.sleep(60) # poczekaj minutę i spróbuj ponownie else: print(f"Błąd: {resp.status_code}")
Zacznij za darmo — plan Free wystarczy do testów i małych projektów.
Adresy.app to zwykłe API HTTP — działa z każdym narzędziem no-code i automatyzacyjnym. Wpisujesz URL, podajesz klucz i gotowe.
Waliduj adresy z formularzy, arkuszy Google, CRM-ów. Bez pisania kodu — klikasz i łączysz moduły.
https://api.adresy.app/api/v1/matchq={{adres}} i api_key=TWOJ_KLUCZAutomatyzacje na własnym serwerze. Idealny do integracji z własną bazą danych, WooCommerce, Shopify.
https://api.adresy.app/api/v1/matchq = {{ $json.adres }}api_key = TWOJ_KLUCZPołącz z tysiącami aplikacji: Google Sheets, Notion, HubSpot, Gmail, Typeform i innymi.
https://api.adresy.app/api/v1/match?q=ADRES&api_key=KLUCZresults__0__match__kod_pocztowy) są dostępne w kolejnych krokachWaliduj adresy bezpośrednio w arkuszu kalkulacyjnym — formuła pobiera dane dla każdego wiersza.
function pobierzKod(adres) { var url = "https://api.adresy.app/api/v1/match?q=" + encodeURIComponent(adres) + "&api_key=TWOJ_KLUCZ"; var resp = UrlFetchApp.fetch(url); var dane = JSON.parse(resp.getContentText()); return dane.results[0].match.kod_pocztowy; }
=pobierzKod(A2)Wspólna zasada dla wszystkich narzędzi: URL to zawsze https://api.adresy.app/api/v1/match, metoda GET, parametry q=adres i api_key=klucz. Jeśli narzędzie obsługuje nagłówki HTTP, możesz też przesłać klucz jako X-API-Key: TWOJ_KLUCZ zamiast w URL.
Chcesz dodać do formularza podpowiedzi w czasie rzeczywistym? API udostępnia trzy kaskadowe endpointy — wpisanie kolejnych części adresu zawęża wyniki do konkretnego budynku.
Krok 1 — znajdź miejscowość
GET /api/v1/miejscowosci?q=Wrocław&limit=5&api_key=TWOJ_KLUCZ
[{ "sym": "0986283", "nazwa": "Wrocław", "label": "Wrocław (Wrocław, dolnośląskie)" }]
Krok 2 — znajdź ulicę (używając sym z kroku 1)
GET /api/v1/ulice?q=Świdnicka&sym=0986283&limit=5&api_key=TWOJ_KLUCZ
[{ "sym_ul": "22461", "nazwa_pelna": "ul. Świdnicka", "label": "ul. Świdnicka" }]
Krok 3 — pobierz numery budynków (używając sym + sym_ul)
GET /api/v1/numery?sym=0986283&sym_ul=22461&limit=10&api_key=TWOJ_KLUCZ
["1", "2", "3", "4", ...]
Krok 4 — pobierz pełne dane adresu (po wyborze numeru)
GET /api/v1/lookup/autofill?sym=0986283&sym_ul=22461&nr=1&api_key=TWOJ_KLUCZ
{
"found": true,
"miejscowosc": "Wrocław",
"ulica": "ul. Świdnicka",
"nr_budynku": "1",
"kod_pocztowy": "50-064",
"lat": 51.108803,
"lon": 17.032651
}
Autouzupełnianie jest dostępne od planu Mini. Plan Free obsługuje walidację i wyszukiwanie — bez podpowiedzi w czasie rzeczywistym. Porównaj plany →
Załóż darmowe konto, wygeneruj klucz API i wyślij pierwsze zapytanie w 5 minut.
Załóż darmowe konto →