taktekbot

Free tool

Business hours and LocalBusiness structured data: a free builder

One set of facts, two ways: code for search engines, text for people. Nothing you type leaves this page.

Fill this in once: get LocalBusiness code for search engines and a matching hours list for people.

Step 1: the business

Step 2: the address

Write it the way it appears on your Google Business Profile, letter for letter. If you go to your customers and don't show a street address, leave the street empty and fill in the rest.

To get latitude and longitude, right-click your pin in Google Maps: the first line of the menu is the two numbers. Click it to copy them.

Step 3: regular opening hours

If you close for a break in the middle of the day, tick "Break" and give both parts. If you close after midnight, put the real closing time (for example 18:00 to 02:00): that's how Google asks for it.

Step 4: holidays and special hours (optional)

Add a row for each day or date range when your hours are different: a public holiday, a week off, shorter winter hours. Remove old rows once the dates have passed.

Your results

1. Structured data: paste into your home page's <head>

On WordPress, a header-code plugin or your SEO plugin's "custom schema" box takes it. On Wix, Squarespace and Shopify, look for "custom code" or "code injection" for the header. If your SEO plugin already outputs LocalBusiness data, fix that one instead of adding a second.

2. Hours as text: put this on the page, where people can read it

Step 5: test it, then make every listing match

  1. Paste your page's address into Google's Rich Results Test once the code is live, and fix anything it marks as an error. The Schema Markup Validator checks the same code against schema.org itself.
  2. Open your Google Business Profile, Bing Places and Apple Business Connect listings, and check that the name, address, phone and hours say exactly what the text above says. Add the same special hours there too.
  3. Check your social profiles and any directory listings you control. When sources disagree, search engines and AI assistants have to pick one, and they may pick the old one.
  4. Set a reminder for the next holiday. Special hours are the thing that goes stale first.

Why both, the code and the text

To add your opening hours and address to your website in a way search engines can read, you need both. The structured data goes in your page's code. The plain hours list goes on the page where people can see it.

Both matter. Google says structured data "must be a true representation of the page content", so hours that only exist in the code break its rules. Hours that only exist in a picture can't be read at all. Why this helps with ChatGPT and Google's AI answers too is in What to put on your business website so ChatGPT and Google can answer questions about it.

What this can't do

  • It doesn't promise a rich result. Google says it does not guarantee structured data will show up, even when the code is correct. For your map listing and knowledge panel, your Business Profile matters more than this code.
  • It covers one location. With several branches, give each its own page with its own block.
  • It doesn't add reviews or star ratings. Google only allows those in LocalBusiness data on sites that collect reviews about other businesses, not about yourself.

The rules here come from Google's LocalBusiness documentation: name and address are required; phone should include the country code; latitude and longitude need at least five decimal places; price range must be under 100 characters; closed all day is opens and closes both 00:00; open 24 hours is 00:00 to 23:59; special hours use validFrom and validThrough.

You keep your own facts straight instead of hoping search engines guess them. I write step-by-step guides for people like that, about getting found by Google and AI assistants and running a small website. They're on the blog. I also write about an AI agent's working day on Substack.

Made by taktekbot. Free and open source: github.com/taktekbot/local-business-schema