Widoczność lokalna

JSON-LD dla lokalnej firmy, przykład LocalBusiness

· aktualizacja: ·12 min czytania
Spis treści 15 sekcji
  1. Kompletny przykład LocalBusiness, szablon do wklejenia
  2. Pola krytyczne dla SEO w 2026
  3. Konkretne typy LocalBusiness, wybierz swój
  4. ProfessionalService vs LocalBusiness, kiedy które
  5. Najczęstsze błędy w JSON-LD
  6. Co dostajesz w Lokal360 standardowo (JSON-LD)
  7. Jak sprawdzić, czy Twoje JSON-LD działa
  8. Powiązane wpisy
  9. Często zadawane pytania
  10. Czym JSON-LD różni się od mikrodanych?
  11. Czy JSON-LD muszę pisać sam?
  12. Jakie pola są obowiązkowe w LocalBusiness?
  13. Jak sprawdzić czy moje JSON-LD działa?
  14. Co to jest @id i czy jest potrzebne?
  15. Czy mogę mieć kilka JSON-LD na jednej stronie?
Wszystkie wpisy 132 wpisów
Widoczność lokalna (SEO + GBP) 14
Spacery 360° 25
Własne systemy zamiast SaaS 24
Strony www, technicznie 21
Strony dla branż 20
AI i trendy 2026 17
Marketing i sprzedaż 11

Część przewodnika: SEO lokalne 2026, kompletny przewodnik dla małej firmy →
Ten artykuł rozwija jeden z wątków pełnego przewodnika.

W skrócie: JSON-LD to format Schema.org który Google preferuje. Lokalna firma powinna mieć 6-7 typów schema: LocalBusiness + Service + BreadcrumbList + Review + AggregateRating + Article (blog) + Person (autor).

  • Krytyczne pola LocalBusiness: geo, address, telephone, openingHours, priceRange, areaServed
  • Co przestało działać: FAQPage (od 2023-08 tylko gov/health), HowTo (2023-09 deprecated)
  • Walidacja: Rich Results Test po każdej zmianie

JSON-LD (JavaScript Object Notation for Linked Data) to obecnie zalecany przez Google format Schema.org. Mały blok JSON w <head> strony, który wyszukiwarki czytają i konwertują na rich snippets, AI Overviews i wyniki voice search.

Ten wpis to kompletny, gotowy do wklejenia przykład LocalBusiness JSON-LD dla lokalnej firmy w Polsce. Wszystkie pola, których Google szuka w 2026, plus osobne typy dla restauracji, salonów, gabinetów medycznych i hoteli. Plus najczęstsze błędy do uniknięcia.

Kompletny przykład LocalBusiness, szablon do wklejenia

Uwaga o FAQPage (aktualizacja 2023-08): Google ograniczył rich-results schemy FAQPage do witryn rządowych i medycznych. Dla commercial schema dalej jest parsowana przez Google (warto ją mieć pod AI Overviews i voice search), ale klasyczny rich snippet z accordion w wynikach nie pojawia się jak kiedyś. W tym poście wymieniam FAQPage jako standard schema.org, ale realny SEO impact dla commercial w 2026 jest minimalny.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://twojafirma.pl/#organization",
  "name": "Twoja Firma",
  "legalName": "Twoja Firma sp. z o.o.",
  "image": [
    "https://twojafirma.pl/img/cover-1x1.jpg",
    "https://twojafirma.pl/img/cover-4x3.jpg",
    "https://twojafirma.pl/img/cover-16x9.jpg"
  ],
  "logo": "https://twojafirma.pl/img/logo.svg",
  "url": "https://twojafirma.pl",
  "telephone": "+48888699533",
  "email": "kontakt@twojafirma.pl",
  "priceRange": "150-2800 zł",
  "currenciesAccepted": "PLN",
  "paymentAccepted": "Cash, Credit Card, Bank Transfer",
  "description": "Krótki opis działalności (160-200 znaków) z głównymi słowami kluczowymi.",
  "slogan": "Twoje hasło reklamowe",
  "foundingDate": "2020-01-01",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Ulica 12",
    "addressLocality": "Kraków",
    "postalCode": "30-001",
    "addressRegion": "Małopolskie",
    "addressCountry": "PL"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "50.0619",
    "longitude": "19.9369"
  },
  "hasMap": "https://maps.google.com/?cid=12345",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/twojafirma",
    "https://www.facebook.com/twojafirma",
    "https://www.linkedin.com/company/twojafirma"
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "bestRating": "5",
    "reviewCount": "184"
  },
  "areaServed": {
    "@type": "City",
    "name": "Kraków"
  },
  "knowsLanguage": ["pl", "en"],
  "founder": {
    "@type": "Person",
    "name": "Jan Kowalski",
    "jobTitle": "CEO i założyciel",
    "url": "https://twojafirma.pl/o-mnie/"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+48888699533",
    "contactType": "customer service",
    "availableLanguage": "Polish",
    "hoursAvailable": "Mo-Fr 09:00-18:00",
    "areaServed": "PL"
  }
}
</script>

Wklej w <head> strony (najlepiej tuż przed zamykającym </head>). Jeden blok per strona głównego LocalBusiness, plus dodatkowe bloki dla Service, FAQPage, BreadcrumbList, Article.

Pola krytyczne dla SEO w 2026

1. @id, unikalny identyfikator URI dla tej organizacji. Pozwala innym schema (Service, Article, Review) odwoływać się do tej organizacji przez { "@id": "..." } zamiast duplikować dane. Konwencja: https://twojafirma.pl/#organization lub #localbusiness.

2. aggregateRating, generuje gwiazdki w wynikach Google. Wymaga prawdziwych opinii z prawdziwych transakcji (Google sprawdza wiarygodność). Minimum 5 opinii, średnia ≥ 4,0.

3. geo, szerokość i długość geograficzna. Google preferuje strony z dokładnymi koordynatami (do 6 miejsc po przecinku). Bez tego, niższy ranking lokalny.

4. openingHoursSpecification, voice search („otwarte teraz”) wymaga tego pola. openingHours (krótki format „Mo-Fr 09:00-18:00”) jest dopuszczalny, ale openingHoursSpecification jest bardziej szczegółowy i obsługuje godziny różne dla różnych dni.

5. sameAs, linki do social media i profili branżowych. Google używa do weryfikacji tożsamości firmy i budowy Knowledge Graph.

6. priceRange, w polskim kontekście podawaj w złotówkach („150-2800 zł”) zamiast amerykańskich symboli „$$”. Czytelniejsze dla użytkownika i AI.

7. image, minimum 1 zdjęcie 1200×630 (Open Graph). Najlepiej 3 wersje: 1×1, 4×3, 16×9. Google wybiera najlepiej dopasowaną do kontekstu.

8. legalName, pełna nazwa prawna („sp. z o.o.”, „spółka cywilna”, „działalność gospodarcza Jan Kowalski”). Sygnał trustworthiness, szczególnie dla branż YMYL.

9. foundingDate, data założenia w formacie ISO 8601 (YYYY-MM-DD). Pokazuje wiek firmy = sygnał stabilności.

10. knowsLanguage, języki obsługi. Ważne dla turystycznych miast (Kraków, Warszawa, Gdańsk).

Konkretne typy LocalBusiness, wybierz swój

Zamiast generycznego LocalBusiness, użyj specyficznego typu z hierarchii Schema.org. Bardziej szczegółowy typ = lepsze dopasowanie w wynikach Google i większa szansa na rich snippety właściwe dla branży.

BranżaTyp Schema.org
RestauracjaRestaurant
KawiarniaCafeOrCoffeeShop
Bar / pubBarOrPub
PizzeriaRestaurant (z servesCuisine: "Italian")
Hotel / pensjonatLodgingBusiness, Hotel, BedAndBreakfast
Domek letniskowyCampground lub LodgingBusiness
Gabinet stomatologicznyDentist
Klinika medycznaMedicalClinic, MedicalBusiness
WeterynarzVeterinaryCare
Salon kosmetycznyBeautySalon
Salon fryzjerskiHairSalon
Salon masażu / SPADaySpa, MassageStudio
Studio fitness / jogaExerciseGym, SportsActivityLocation
Warsztat samochodowyAutoRepair
Biuro nieruchomościRealEstateAgent
Szkoła językowaEducationalOrganization
Galeria sztukiArtGallery
Sala weselnaEventVenue
CoworkingOfficeEquipmentStore lub niestandardowo LocalBusiness z opisem
Piekarnia / cukierniaBakery
Kancelaria prawnaLegalService, Attorney
Doradca finansowyFinancialService
ArchitektProfessionalService
FotografProfessionalService

Im konkretniej, tym lepiej dla Google. Dentist daje dostęp do dedykowanych pól medycznych (medicalSpecialty, availableService), których generyczny LocalBusiness nie ma.

ProfessionalService vs LocalBusiness, kiedy które

LocalBusiness to dla firm z fizyczną siedzibą, do której przychodzą klienci (restauracja, gabinet, salon).

ProfessionalService to dla usług profesjonalnych, gdzie często to fachowiec dojeżdża do klienta (fotograf, architekt, prawnik, doradca finansowy, freelancer IT). Można też używać dla firm hybrydowych.

Lokal360 używa ProfessionalService jako głównego typu, bo dojeżdżamy do klientów po całej Polsce, fotograf 360° z lokalizacją centralną, ale obszarem obsługi „cała Polska”. U siebie podaję aggregateRating 5,0 (31 opinii) i areaServed: Polska, oparte na realnych opiniach z Google, nie na liczbach zastępczych jak w szablonie wyżej.

Najczęstsze błędy w JSON-LD

1. Review spam, te same opinie powtórzone na 10 podstronach. Google od 2025 traktuje to jako spam i obniża ranking. Strategia: pełne opinie tylko na 1-2 stronach (homepage, cennik), na pozostałych, tylko aggregateRating z @id referencją do Organization.

2. Fake AggregateRating, wymyślone gwiazdki bez realnych opinii. Google sprawdza spójność z opiniami w GBP. Niespójność = ban schema na całej domenie.

3. Pole priceRange jako liczba, musi być stringiem („150-2800 zł”, nie 150). Liczbowy priceRange powoduje błąd w Rich Results Test.

4. Brak @id, bez tego nie da się referencjonować organizacji z innych schema. Każdy nowy Service/Article duplikuje dane Organization, co rozpoznaje jako błąd struktury.

5. Niespójność z GBP, adres, telefon, godziny w schema muszą być takie same jak w Google Business Profile. Niespójność = obniżenie zaufania.

6. Wstrzykiwanie schema przez JavaScript. Google rekomenduje renderowanie schema w server-side HTML, nie przez JS po załadowaniu. Strony Astro / Next.js SSR / WordPress robią to dobrze. SPA z React bez SSR, często źle.

7. Brak walidacji, wstrzykujesz schema i nigdy nie sprawdzasz, czy jest poprawne. Walidacja przez Rich Results Test zajmuje 30 sekund i wykrywa 90% błędów.

Co dostajesz w Lokal360 standardowo (JSON-LD)

Każda strona Lokal360 ma od pierwszego dnia:

  • Pełen LocalBusiness (lub konkretny typ. Restaurant, Dentist, Hotel) z wszystkimi polami z szablonu wyżej
  • Service per usługa z osobnym opisem i ceną
  • Review + AggregateRating z centralnego pliku (single source of truth, brak duplikacji)
  • FAQPage na podstronach z FAQ (rich snippet accordion w Google)
  • BreadcrumbList na każdej podstronie (nawigacja w wyniku Google)
  • Article + Person dla wpisów blogowych
  • Organization + WebSite + SearchAction globalnie (sitelinks searchbox)
  • Speakable dla voice search

Bez wtyczek. Walidowane przez Google Rich Results Test. Działa od pierwszego dnia.

Jak sprawdzić, czy Twoje JSON-LD działa

  1. Rich Results Test Google, wpisz URL, sprawdź, jakie typy rich snippets są dostępne. Pokaże błędy i ostrzeżenia.
  2. Schema Markup Validator, sprawdza poprawność składni i strukturę. Bardziej szczegółowy.
  3. Google Search Console → „Wygląd w wyszukiwarce” / „Ulepszenia”, pokazuje, które typy schema Google rozpoznał, ile stron poprawnych vs z błędami.

Po wdrożeniu poprawnego JSON-LD, rich snippets pojawiają się w wynikach Google typowo w 1-4 tygodniach. Pierwsze sygnały (gwiazdki, FAQ accordion) zwykle w 7-14 dni.

Powiązane wpisy

Chcesz audyt JSON-LD Twojej strony albo gotowy schema dla Twojej branży? Zostaw numer w formularzu, sprawdzę co masz, czego brakuje, dam gotowy kod do wklejenia. W 24h, bez zobowiązań.

Często zadawane pytania

Czym JSON-LD różni się od mikrodanych?

JSON-LD to osobny blok kodu w sekcji <head>, nie miesza się z HTML treści. Mikrodane (microdata) to atrybuty wbudowane w HTML (itemtype, itemprop). Google zaleca JSON-LD jako preferowany format: łatwiej go utrzymać, mniej kolizji z designem strony.

Czy JSON-LD muszę pisać sam?

Nie. Dla małych firm większość frameworków (Astro, Next.js) generuje JSON-LD z templates. WordPress wymaga wtyczki (Yoast SEO, Rank Math) ale to często niekompletne. W Lokal360 generujemy JSON-LD ręcznie w kodzie strony, pełna kontrola nad każdym polem.

Jakie pola są obowiązkowe w LocalBusiness?

Minimum: name, address (z postalCode, addressLocality, addressCountry), telephone, openingHours. Zalecane dodatkowe: image, url, geo (lat/lng), priceRange, hasMap, aggregateRating, review, sameAs (social media), description, areaServed.

Jak sprawdzić czy moje JSON-LD działa?

  1. Google Rich Results Test (search.google.com/test/rich-results), najlepsze narzędzie. 2) Schema Markup Validator (validator.schema.org). 3) Google Search Console, sekcja „Wygląd w wyszukiwarce” pokazuje jakie typy schema Google rozpoznaje. Po wdrożeniu JSON-LD, rich snippets pojawiają się typowo w 1-4 tygodnie.

Co to jest @id i czy jest potrzebne?

@id to unikalny identyfikator URI dla obiektu schema.org. Pozwala na cross-referencing, np. blog post może odwołać się do autora przez @id zamiast duplikować dane Person. Dla małej firmy używaj @id w głównym Organization/LocalBusiness (np. https://twojafirma.pl/#organization), a w innych schema (Service, Article, Review) odwołuj się do tego @id zamiast duplikować dane.

Czy mogę mieć kilka JSON-LD na jednej stronie?

Tak, to standard. Strona główna może mieć: Organization + LocalBusiness + WebSite + FAQPage + BreadcrumbList + Service. Wszystkie jako osobne tagi <script type='application/ld+json'>. Google czyta je razem i traktuje jako jeden graf wiedzy o stronie. Lokal360 standardowo wstrzykuje 4-7 JSON-LD per podstrona.


IB

Igor Biały

Twórca Lokal360 · spacery 360°, strony, systemy

Nowszy wpis: Co to jest Local Pack Google i jak się tam dostać w 2026 Blog Starszy wpis: Schema.org dla małej firmy, co to i czemu Google to lubi

O autorze

Igor Biały · twórca Lokal360

Twórca Lokal360

Koduję od 16. roku życia (z czasem doszła fotografia, a potem spacery 360°), od 2025 z nowoczesnym, zautomatyzowanym warsztatem. 150+ wykonanych spacerów 360° na Google Maps. Prowadzę Lokal360 (uruchomione wiosną 2026): strony internetowe, własne systemy rezerwacji, spacery 360°, opieka. Solo, bez agencji, z nowoczesnym warsztatem.

IB

Masz pytanie po przeczytaniu?

Zostaw numer, oddzwonię w ciągu 24 h. Powiem wprost, co ma sens w Twoim przypadku. Bez zobowiązań.

Zostaw numer, oddzwonię zwykle w kilka godzin:

Dodaj firmę, miasto, email (opcjonalnie)

Twoje dane idą wyłącznie do mnie. Polityka prywatności