{"id":164,"date":"2026-10-13T12:00:10","date_gmt":"2026-10-13T12:00:10","guid":{"rendered":"https:\/\/alleasyseo.com\/blog\/?p=164"},"modified":"2026-10-13T12:00:10","modified_gmt":"2026-10-13T12:00:10","slug":"local-schema-markup-json-ld-business-location","status":"publish","type":"post","link":"https:\/\/alleasyseo.com\/blog\/local-schema-markup-json-ld-business-location\/","title":{"rendered":"Local Schema Markup: How to Describe a Business Location in JSON-LD and Check What Crawlers Can See"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You publish your shop&#8217;s address, phone number and opening hours on a page, but a machine reads plain text less reliably than labelled data. Local schema markup is a block of JSON-LD that labels those facts, so software can tell which string is the street, which is the phone number and which hours belong to which location. This guide shows what to include, how to handle several locations or a service-area business, and how to confirm the script is really present in the HTML a crawler receives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One caution before the steps: Google Search Central states that valid markup does not guarantee a rich result, and nothing here promises rankings, a knowledge panel or traffic. The goal is accurate, machine-readable information.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li class=\"\"><a href=\"#what-local-schema-markup-is-and-when-it-fits-1\">What local schema markup is and when it fits<\/a><\/li><li class=\"\"><a href=\"#pick-a-subtype-and-fill-only-the-properties-you-can-prove-2\">Pick a subtype and fill only the properties you can prove<\/a><\/li><li class=\"\"><a href=\"#a-minimal-local-schema-markup-example-in-json-ld-3\">A minimal local schema markup example in JSON-LD<\/a><\/li><li class=\"\"><a href=\"#one-location-several-branches-or-a-service-area-business-4\">One location, several branches or a service-area business<\/a><\/li><li class=\"\"><a href=\"#check-what-crawlers-can-see-a-step-by-step-workflow-5\">Check what crawlers can see: a step-by-step workflow<\/a><\/li><li class=\"\"><a href=\"#why-your-local-schema-markup-seems-missing-and-what-to-avoid-6\">Why your local schema markup seems missing, and what to avoid<\/a><\/li><li class=\"\"><a href=\"#frequently-asked-questions\">Frequently asked questions<\/a><\/li><li class=\"\"><a href=\"#next-steps\">Next steps<\/a><\/li><li class=\"\"><a href=\"#sources\">Sources and further reading<\/a><\/li><\/ul><\/nav><\/div>\n\n\n<div class=\"wp-block-image aes-auto-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023-1024x576.jpg\" alt=\"Illustration of a small neighbourhood shop representing a business location described with local schema markup\" class=\"wp-image-167\" srcset=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023-1024x576.jpg 1024w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023-300x169.jpg 300w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023-768x432.jpg 768w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023-760x428.jpg 760w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-1-113-1-9175274f5d348023.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-local-schema-markup-is-and-when-it-fits-1\">What local schema markup is and when it fits<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schema.org defines <code>LocalBusiness<\/code> as a type for describing a particular business location. <strong>JSON-LD<\/strong> (JavaScript Object Notation for Linked Data) is the format Google recommends for structured data, because it sits in a separate script block instead of being woven through your visible markup. Google&#8217;s Local Business documentation says to define each location as a LocalBusiness and choose the most specific applicable subtype, such as Restaurant or Electrician.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It fits a single customer-facing shop, a business with several real branches, and an agency managing client sites, provided each location has facts you can verify. It does not fit a business with no real location to describe, and it should never be used to claim something the page does not show.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep three sources of rules apart as you work. Schema.org is the vocabulary, which says what properties exist. Google&#8217;s Local Business feature documentation says what that feature needs. Google Business Profile guidelines govern your listing. A property can be valid in the first and irrelevant to the others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you would rather start from a form than a blank file, the AllEasySEO <a href=\"https:\/\/alleasyseo.com\/schema-markup-generator\" title=\"Schema Markup Generator\">Schema Markup Generator<\/a> has a local business option. It formats what you type, but it cannot establish that your facts are true, so review its output against the live page and current Google guidance.<\/p>\n\n\n<div class=\"wp-block-image aes-auto-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7-1024x576.jpg\" alt=\"Checklist and map pin illustrating the properties to include in LocalBusiness structured data\" class=\"wp-image-169\" srcset=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7-1024x576.jpg 1024w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7-300x169.jpg 300w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7-768x432.jpg 768w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7-760x428.jpg 760w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-2-113-2-9358500c5186ace7.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"pick-a-subtype-and-fill-only-the-properties-you-can-prove-2\">Pick a subtype and fill only the properties you can prove<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with the most specific subtype that honestly describes the business. A bakery can use <code>Bakery<\/code>, an electrician <code>Electrician<\/code>, and if nothing narrower applies, <code>LocalBusiness<\/code> itself is acceptable. Then add properties from this checklist, and skip any you cannot support.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>name<\/strong>: the real public business name, as shown on the page.<\/li>\n\n\n\n<li><strong>address<\/strong>: a <code>PostalAddress<\/code> with street, locality, region, postal code and country. Google lists name and address as required for its Local Business feature. That is a Google feature requirement, not a rule that schema.org imposes on every property.<\/li>\n\n\n\n<li><strong>telephone<\/strong>: the location&#8217;s primary number, with country and area codes. Formatting need not match every listing character for character, but the number must be the same.<\/li>\n\n\n\n<li><strong>url<\/strong>: the fully qualified URL of this location&#8217;s page.<\/li>\n\n\n\n<li><strong>openingHoursSpecification<\/strong>: only if the hours are accurate for this specific location.<\/li>\n\n\n\n<li><strong>geo<\/strong>: latitude and longitude to at least five decimal places, when you know them.<\/li>\n\n\n\n<li><strong>sameAs<\/strong>: URLs of profiles that unambiguously identify the same business.<\/li>\n\n\n\n<li><strong>areaServed<\/strong>: the area a business serves, where that is true.<\/li>\n\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Every value should match what visitors see on the page and what your maintained business listings say. Names, addresses, phone numbers and hours that drift apart across places are a common source of confusion. The AllEasySEO <a href=\"https:\/\/alleasyseo.com\/local-seo-checker\" title=\"Local SEO Checker\">Local SEO Checker<\/a> audits NAP (name, address, phone) consistency and schema markup on a page, which is a quick way to spot mismatches before you publish.<\/p>\n\n\n<div class=\"wp-block-image aes-auto-image\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acee4356f3e9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acee4356f3e9\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d-1024x576.jpg\" alt=\"Conceptual illustration of labelled business details representing a JSON-LD local schema markup example\" class=\"wp-image-171\" srcset=\"https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d-1024x576.jpg 1024w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d-300x169.jpg 300w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d-768x432.jpg 768w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d-760x428.jpg 760w, https:\/\/alleasyseo.com\/blog\/wp-content\/uploads\/2026\/10\/local-schema-markup-image-3-113-3-5439140af330e67d.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"a-minimal-local-schema-markup-example-in-json-ld-3\">A minimal local schema markup example in JSON-LD<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The example below uses a synthetic business, a reserved example domain and a fictional phone number. Replace every value with facts from your own location, and delete any property you cannot confirm.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;script type=&quot;application\/ld+json&quot;&gt;\n{\n  &quot;@context&quot;: &quot;https:\/\/schema.org&quot;,\n  &quot;@type&quot;: &quot;Bakery&quot;,\n  &quot;name&quot;: &quot;Example Corner Bakery&quot;,\n  &quot;url&quot;: &quot;https:\/\/www.example.com\/locations\/riverside\/&quot;,\n  &quot;telephone&quot;: &quot;+1-555-0100&quot;,\n  &quot;address&quot;: {\n    &quot;@type&quot;: &quot;PostalAddress&quot;,\n    &quot;streetAddress&quot;: &quot;100 Example Street&quot;,\n    &quot;addressLocality&quot;: &quot;Springfield&quot;,\n    &quot;addressRegion&quot;: &quot;IL&quot;,\n    &quot;postalCode&quot;: &quot;62701&quot;,\n    &quot;addressCountry&quot;: &quot;US&quot;\n  },\n  &quot;geo&quot;: {\n    &quot;@type&quot;: &quot;GeoCoordinates&quot;,\n    &quot;latitude&quot;: 39.78170,\n    &quot;longitude&quot;: -89.65015\n  },\n  &quot;openingHoursSpecification&quot;: &#091;\n    {\n      &quot;@type&quot;: &quot;OpeningHoursSpecification&quot;,\n      &quot;dayOfWeek&quot;: &#091;&quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;, &quot;Thursday&quot;, &quot;Friday&quot;&#093;,\n      &quot;opens&quot;: &quot;08:00&quot;,\n      &quot;closes&quot;: &quot;17:00&quot;\n    }\n  &#093;,\n  &quot;sameAs&quot;: &#091;&quot;https:\/\/www.example.org\/example-corner-bakery&quot;&#093;\n}\n&lt;\/script&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notice what is absent: no <code>aggregateRating<\/code>, no <code>review<\/code>, no price range invented to fill a gap. The hours cover weekdays only because the example assumes the bakery is closed at weekends. If your business closes on a day, simply leave that day out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before publishing, paste the block into the <a href=\"https:\/\/alleasyseo.com\/schema-markup-validator\" title=\"Schema Markup Validator\">Schema Markup Validator<\/a> to catch syntax errors such as a missing comma or bracket. A validator reads structure, not truth. It cannot tell you whether the phone number is yours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"one-location-several-branches-or-a-service-area-business-4\">One location, several branches or a service-area business<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Do I need markup on every page?<\/strong> No. Google says structured data can appear on any page, but the page that actually carries the business information is the sensible home for it, and there is no requirement to repeat location markup site-wide. For a single shop, use the location, contact or about page that shows the address and hours.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Several real locations.<\/strong> Give each branch its own accurate details and, preferably, its own useful location page. Never assign one branch&#8217;s phone number, coordinates or hours to another. Do not confuse branches with departments: Google documents separate department markup for distinct departments inside one location, which is a different situation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A service-area business.<\/strong> If you travel to customers and do not receive them at your address, Google Business Profile guidance says to hide that address from customers and show your service area instead. Schema.org supports <code>areaServed<\/code>, but Google&#8217;s documented Local Business feature asks for a physical address, and <code>areaServed<\/code> is not a documented substitute for it. So do not publish a private home address in JSON-LD, and do not invent a storefront to satisfy a test. Publish truthful public information and accept that some features may not apply to you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agencies managing client sites should collect name, address, phone, hours and profile links from the client in writing, then apply them page by page. That keeps the markup tied to confirmed facts rather than guesses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"check-what-crawlers-can-see-a-step-by-step-workflow-5\">Check what crawlers can see: a step-by-step workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A CMS preview or a plugin setting only tells you what you intended. Work through these steps on the live URL.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Open the published page<\/strong>, not the editor preview, and compare the visible name, address, phone number and hours with the values in your JSON-LD.<\/li>\n\n\n\n<li><strong>View the page source.<\/strong> Use your browser&#8217;s View Page Source command and search for <code>application\/ld+json<\/code> and the business name. Confirm you are on the final URL after any redirect, and consider whether a cache or template is still serving an older version.<\/li>\n\n\n\n<li><strong>Run the <a href=\"https:\/\/alleasyseo.com\/spider-simulator\" title=\"Spider Simulator\">Spider Simulator<\/a><\/strong> on the same URL as an additional view of what its fetch retrieves, including metadata and visible content. It is a useful cross-check, but it is not an exact reproduction of Googlebot.<\/li>\n\n\n\n<li><strong>Test in Google&#8217;s tools.<\/strong> Run the Rich Results Test on the live URL and inspect detected items, warnings and the rendered HTML. For a site you control, Search Console&#8217;s URL Inspection tool shows Google&#8217;s own inspection.<\/li>\n\n\n\n<li><strong>Add a distinct title and description.<\/strong> Write a page-specific title and meta description for each location, for example with the Meta Tag Generator. These do not replace LocalBusiness markup, and Google may still generate a different title link or snippet.<\/li>\n\n\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Remember what source inspection proves: one response delivered that script at that moment. It does not prove every crawler retrieved it, or that anything was indexed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-your-local-schema-markup-seems-missing-and-what-to-avoid-6\">Why your local schema markup seems missing, and what to avoid<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the script shows in the rendered page of a testing tool but not in View Page Source, it was probably injected by JavaScript after load. Google can render JavaScript, and Google&#8217;s documentation covers generating structured data that way, but rendering and access problems still deserve testing. If you want the background on rendering, read my guide on <a href=\"https:\/\/alleasyseo.com\/blog\/can-google-crawl-javascript-links\/\" title=\"Can Google Crawl Javascript Links\">whether Google can crawl JavaScript links<\/a>. Where possible, put the script in the initial HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If it is absent from both views, treat it as a publishing problem before suspecting syntax. Check that the script was saved in the right template, that a plugin or theme is not stripping it, that a cache is not serving an old copy, and that the page is reachable without a login or block.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two safeguards matter most. First, Google&#8217;s structured data policies, last updated July 10, 2026, say marked-up content must not mislead users or describe content hidden from readers, and that passing a test does not guarantee a rich result. Second, never invent reviews or ratings. Google&#8217;s review guidance says a business&#8217;s own pages are ineligible for the star review feature for self-serving LocalBusiness or Organization reviews, including reviews embedded through a third-party widget. Fabricated ratings risk your credibility and offer no benefit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-1\">Do I need local schema markup on every page of my site?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Google says structured data can appear on any page, but the page that contains the business information is the more sensible place. Put it on the location, contact or about page, and do not repeat it site-wide just to be thorough.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-2\">How do several locations differ from a service-area business?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Several locations means multiple real places with their own addresses, phones and hours, each ideally with its own page and markup. A service-area business travels to customers and may hide its address, so it has a service area rather than a storefront to describe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-3\">Can I use areaServed instead of an address?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Schema.org defines areaServed, but Google&#8217;s documented Local Business feature lists a physical address as required. areaServed is not a documented substitute, so do not rely on it to qualify for that feature.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-4\">Why is my JSON-LD not visible after publishing?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Check the published URL, not a preview. If the script is in rendered output but not View Page Source, JavaScript probably injected it. If it is in neither, look at templates, plugins, caching and access before blaming syntax.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-5\">Why does valid markup not produce a search feature?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Validity only means the syntax and properties are readable. Google&#8217;s policies say passing a test does not guarantee a rich result, and eligibility depends on feature rules, content quality and Google&#8217;s own decisions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-6\">Can I add reviews and ratings to my LocalBusiness markup?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Only if they are genuine and eligible. Google&#8217;s review guidance says a business&#8217;s own pages are ineligible for star reviews on self-serving LocalBusiness or Organization markup, so adding ratings to your own location page is not worthwhile.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"faq-7\">Does my phone number have to be formatted exactly like my listings?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not character for character. The meaning must match, so use the same number with country and area codes. Differences in spaces or hyphens are minor, but a different number or old address is a real inconsistency.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"next-steps\">Next steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Local schema markup works best as a small, honest record of one location: a specific subtype, a real address, a working phone number, accurate hours and nothing invented. Before you finish, run this maintenance checklist: the visible page and the JSON-LD agree; each branch has its own facts; the script appears in the delivered HTML; listings still match; and no reviews or ratings are fabricated. Revisit it whenever hours, phone numbers or addresses change, and treat any search feature as a possible outcome, never a promise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Related tools and resources on AllEasySEO:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/alleasyseo.com\/schema-markup-generator\">Schema Markup Generator<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/alleasyseo.com\/local-seo-checker\">Local SEO Checker<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/alleasyseo.com\/schema-markup-validator\">Schema Markup Validator<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/alleasyseo.com\/spider-simulator\">Spider Simulator<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/alleasyseo.com\/blog\/can-google-crawl-javascript-links\/\">Can Google Crawl Javascript Links<\/a><\/li>\n\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sources\">Sources and further reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/javascript\/fix-search-javascript\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/javascript\/fix-search-javascript<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/local-business?product=breeze\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/local-business?product=breeze<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/sd-policies?isappinstalled=0\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/sd-policies?isappinstalled=0<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/generate-structured-data-with-javascript?hl=en\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/generate-structured-data-with-javascript?hl=en<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/review-snippet?error=error_code\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/review-snippet?error=error_code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/snippet\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/snippet<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/schema.org\/LocalBusiness\" target=\"_blank\" rel=\"noopener\">https:\/\/schema.org\/LocalBusiness<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/support.google.com\/business\/answer\/2853879?cq_net=g&amp;hl=en\" target=\"_blank\" rel=\"noopener\">https:\/\/support.google.com\/business\/answer\/2853879?cq_net=g&amp;hl=en<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/local-business?price=FREE\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/local-business?price=FREE<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/support.google.com\/business\/answer\/3038177?afsrc=1\" target=\"_blank\" rel=\"noopener\">https:\/\/support.google.com\/business\/answer\/3038177?afsrc=1<\/a><\/li>\n\n\n<\/ul>\n\n\n","protected":false},"excerpt":{"rendered":"<p>A practical guide to local schema markup: choose a LocalBusiness subtype, write accurate JSON-LD, handle several locations or service areas, and confirm the script is in the delivered HTML.<\/p>\n","protected":false},"author":1,"featured_media":165,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[50,73,75,74,76,18,12],"class_list":["post-164","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-seo","tag-json-ld","tag-local-schema-markup","tag-local-seo","tag-localbusiness-schema","tag-service-area-business","tag-structured-data","tag-technical-seo"],"_links":{"self":[{"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/posts\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/comments?post=164"}],"version-history":[{"count":4,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/posts\/164\/revisions"}],"predecessor-version":[{"id":172,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/posts\/164\/revisions\/172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/media?parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/categories?post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alleasyseo.com\/blog\/wp-json\/wp\/v2\/tags?post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}