**

Step by Step: Build an SEO Monster with Bolt.new

I have made this into a 3 part series, but people are complaining it’s too complex, so here’s a breakdown:

Build PROFITABLE Programmatic SEO Websites With AI

This New AI SEO Method is Worth MILLIONS

🛑 STOP Building Wordpress Websites… Do THIS Instead

Second 2 part series for AI version of this - prompts for both types of website below

  1. AI Built This 100k Page Website for $23

  2. Turning Ideas into Cash Machines: The Ultimate AI-Powered Website Strategy

Cursor - The new best way to make sites

Static website generation with Cursor:

I Let This AI Create My Entire Website

After a lot of experimentation, I’ve decided Cursor is actually better than Bolt - here’s a series on how to use Cursor - here’s the prompt, videos coming soon:

Dog Website programmatic AI SEO website powerhouse

Let’s talk a bit about this method

  1. Find a CSV of data on Kaggle which has CC0 (meaning you can use it commercially)

  2. Use that data + ChatGPT 4o mini’s JSON mode to populate pages with data visualisations

  3. Make the website using Cursor and launch on Vercel

Dynamic SSR website generation with Cursor:

prompt to build the app (Video coming shortly)

Video:

AI Built Me A Website with 176 Million Pages… Here’s How

This is another series coming very soon, showing the process of making finabusinessuk.com

I have now created 11+ websites with this programmatic SEO method:

getmarriedinitaly.co - released 22/10/2024 and has 200+ indexed pages on Google already

findatradespersonireland.com - Released 20/10/2024 has 1800 indexed pages on Google already

bestboardgamesfor.com - Released on 23/10/2024, did not submit to search console, 0 indexed pages

themeaningofbabynames.com - Released on 25/10/2024 - submitted to search console, currently 8 indexed pages after a few hours

https://whatdoesmybabynamemean.com/ - built for the video 3 part series showing how to build static pages with ChatGPT content and a database of information - 167k pages, released on 26-10-24 at 1:30am 

https://www.findabusinessuk.com/ - business directory like findatradespersonireland - but with 170+ million pages (I think) - 1000 Keywords within 24 hours

https://whatdoesmybabynamemean.com/ - buitl live to show people how to make these websites

https://www.mydogbreedhelper.com/ - Best performing statically built website so far - in my opinion this is one of the better ways to make one of these websites

https://www.theroascalculator.com/ - one page website to see if I can rank a tool/calculator

https://www.thebestroicalculators.com/ - same as before but with a few more pages 

So I am in a good position to talk about how this process works, step by step

Firstly, these websites have two different types - static and dynamic. Getmarriedinitaly and bestboardgamesfor are both statically generated websites. This means that when you build the application (website) using “npm run build” the pages are built at this point. This is much easier to conceptualize for most people, including myself - as it’s the traditional method of ranking on Google. This means that you’re effectively creating pages based on responses from an API. For example, getmarriedinitaly.co - all we did was create SEO meta tags and meta descriptions that are easily repeatable over many pages - think Get Married in Y Region of Italy, or get Married in an X (venue type) in Y (Region of Italy). We then fill this content with local businesses, taken from the data for seo API. 

There’s nothing particularly special about these websites. They are static websites that will never change unless I run the build process again. The website is fully built already. This is true of bestboardgames.com as well.

However, findatradespersonireland.com is different - it is all dynamically generated. This means that when the website is thrown onto Google, certain pages don’t actually exist, they’re not in the sitemap, but they can still rank on Google:

https://findatradespersonireland.com/roofer - this page exists and is just a “find roofers in Ireland” page, with all the regions of Ireland on it - You click a region and it gives you:

https://findatradespersonireland.com/roofer/wexford - This page exists - it is a stiatically generated page, and can be found in the sitemap, then you click on a town:

https://findatradespersonireland.com/roofer/wexford/ferns - This page “doesn’t exist” - as in, it only exists when someone has clicked on it, it is not in the sitemap. BUT BUT BUT - Google can still crawl this page, and render the dataforSEO API in order to see the content:

When someone has clicked it, that’s when it exists, and becomes a cached version of the page, but it can be updated. For example, if a new business comes along and starts a roofing company in Ferns, Wexford - this page will eventually udpate automatically and add this new business to this page, without me rebuilding the entire website

These website types are harder to conceptualise in your head, at least for me, HOWEVER THEY ARE ACTUALLY EASIER TO BUILD

Why? Because when you have to build 1000+ pages statically, you have an issue at build time. You need it to build in under one hour. This is because Vercel (most common place to host a NextJS project) has a max build time for one hour - however by using SSR (server side rendering) Caching, fallbacks etc - We can actually launch a website much more quickly and easily.

What is the point of all this?

Have you ever seen such a clean “why pages aren’t indexed” profile? This is why Google loves these websites.

1900 Indexed pages in under a week? Completely insane. But also there are MORE pages indexed than “exist” or that were statically generated during the build process (only 1500 pages were generated at build time)

This is an example of a page that I didn’t even know would get indexed, but now I’ve done the test, I understand how this works - and we can now go ahead and build more projects

Here’s the step by step process:

  1. Think of an idea and buy a domain - you wanna do this first because you want a brand name to put into the various AI tools we’re going to use

  2. Optional Make a facebook page, instagram, etc. Make a logo, a favicon, etc

  3. Give everything to V0 and ask it to make a clean modern modular homepage, footer, and header on one single page, using nextjs, shadcn, and tailwind

  4. Give the code you get from V0 once you’re happy with it to bolt.new and say implement this design exactly as it is now, but make me a group of reusable components which can style my entire website - set up the project as a NextJS project with shadcn and tailwind

  5. Think about, or use AI to think about, the different categories you’re going to use to create scale. This has to be a list of something that you can store in JSON, for example regions of ireland, towns within those regions of ireland, and trades - this gives 3 potential pages (if not more) per trade - X trade in Y region, X trade, and X trade in Y Region in Z Town

  6. Change the prompt below to fit with your project, the key parts are, giving it an example JSON response from the API you want to use, giving it documentation for any relevant APIs, telling it to create pages that are both static pages and dynamically generated pages, using SSR or static generation, using caching and fallbacks, dynamic routing, Complete meta tag optimization including, Semantic HTML structure, Schema markup relevant to your content type, generate static pages with tag

  7. There are two different things here: npm run dev (this starts your application as a webapp, without actually building it - this is very easy to do, and will hardly ever have any issues. This is basically like a preview of your website. The other is npm run build, which is much more complicated - but is required in order to launch your server)

  8. You can run npm run dev until the entire website works basically as you want it, then fix the typescript errors one by one with bolt, until npm run build works and builds correctly, then you can launch on netlify or vercel.

This is the prompt I used to build findatradespersonireland.com:

prompt to build the app

  1. Prompt to build AI app here (hasn’t been tested but should work well)

programmatic AI SEO website powerhouse

**


**

Comprehensive Roadmap for Find a Tradesperson Ireland

Website Address: findabusinessuk.com  

Generated on: 2024-10-19


Phase 1: Project Setup and Initial Configuration

1. Core Objectives

  • Programmatic SEO: Build a fully programmatic SEO-friendly website focusing on tradespeople in Ireland.

  • Dynamic Content Generation: Utilize lists of trades, counties, and towns to generate dynamic paths and pages.

  • Static and Dynamic Content Mix: Incorporate substantial static content at build time while fetching and caching dynamic content on-demand.

2. Initial Setup

  • Development Environment

  - Install Node.js and a code editor like Visual Studio Code.

  - Initialize a new Next.js project with TypeScript support.

    ```bash

    npx create-next-app@latest find-a-tradesperson-ireland —typescript

    cd find-a-tradesperson-ireland

    ```

  • Version Control

  - Initialize a Git repository.

    ```bash

    git init

    git add .

    git commit -m “Initial commit”

    ```

  - Create a .gitignore file to exclude node_modules, .env.local, and other unnecessary files.

  • Code Quality Tools

  - Install and configure ESLint and Prettier.

    ```bash

    npm install eslint prettier eslint-config-prettier eslint-plugin-prettier —save-dev

    npx eslint —init

    ```

  - Configure .eslintrc.js and .prettierrc for consistent code style.

3. Install Required Libraries

  • Styling

  - Install Tailwind CSS for utility-first CSS styling.

    ```bash

    npm install tailwindcss postcss autoprefixer

    npx tailwindcss init -p

    ```

  - Configure tailwind.config.js to include paths to all your pages and components.

  • UI Components

  - Install shadcn/ui components for accessible and reusable UI elements.

    ```bash

    npx shadcn-ui init

    ```

  - Follow the prompts to set up the components.

  • Icons

  - Install Lucide Icons for consistent iconography.

    ```bash

    npm install lucide-react

    ```

  • Data Fetching

  - Install Axios for handling HTTP requests.

    ```bash

    npm install axios

    ```

4. Static Data Preparation

  • Data Files

  - Create a data directory to store your static JSON files.

    - data/counties.json: List of counties and their towns in Ireland.

    - data/trades.json: List of trades (e.g., plumbers, electricians, carpenters).

  • Purpose

  - These files will be used to programmatically generate all possible combinations of trades in various locations without hardcoding.

5. Environment Variables

  • Secure Configuration

  - Create a .env.local file to store environment-specific variables.

    ```env

GOOGLE_PLACES_API_KEY=

    ```

  - Note: Ensure this file is included in your .gitignore to prevent sensitive data from being committed.


Phase 2: UI/UX Foundation

6. Design Layout Components

  • Header and Footer

  - Use shadcn/ui components to create consistent Header and Footer components.

  - Include navigation links to main sections: Home, Trades, Counties, Contact.

  • Main Layout

  - Create a MainLayout component to wrap pages with the header and footer.

    ```jsx

    // components/MainLayout.tsx

    const MainLayout = ({ children }) (

      <>

        

        

{children}

        

      </>

    );

    export default MainLayout;

    ```

  • Navigation

  - Implement a responsive navigation menu.

  - Use Lucide Icons for visual enhancements.

7. Implement Reusable UI Components

  • Cards

  - Create TradeCard, CountyCard, and TradespersonCard components.

  - Use Tailwind CSS and shadcn/ui for styling.

  • Buttons

  - Standardize button styles using shadcn/ui components.

  • Breadcrumbs

  - Implement breadcrumbs for better navigation and SEO.


Phase 3: Dynamic Routing and API Integration

8. Dynamic Routing with Fallback

8.1 Implement Dynamic Routes

  • Create Dynamic Pages

  - Set up dynamic routes for trades in locations:

    ```

    pages/

      [tradeSlug]/

        [countySlug]/

          [townSlug]/

            index.tsx

    ```

  • Configure getStaticPaths with Fallback

  ```typescript

  // pages/[tradeSlug]/[countySlug]/[townSlug]/index.tsx

  export const getStaticPaths: GetStaticPaths = async () {

    return {

      paths: [], // No pages pre-rendered at build time

      fallback: ‘blocking’, // Pages will be generated on-demand

    };

  };

  ```

9. API Integration with DataForSEO

9.1 Set Up API Service

  • Create API Utility Functions

  ```typescript

  // services/dataForSeo.ts

  import axios from ‘axios’;

  const auth = Buffer.from(${process.env.DATAFORSEO_USERNAME}:${process.env.DATAFORSEO_PASSWORD}).toString(‘base64’);

  export const fetchTradespeople = async (keyword: string) {

    try {

      const response = await axios.post(

        ‘https://api.dataforseo.com/v3/serp/google/maps/live/advanced’,

        [{ keyword, location_code: 2372, language_code: ‘en’, device: ‘desktop’, os: ‘windows’, depth: 100 }],

        { headers: { Authorization: Basic ${auth} } }

      );

      return response.data;

    } catch (error) {

      console.error(‘Error fetching tradespeople:’, error);

      return null;

    }

  };

  ```

9.2 Implement Error Handling

  • Handle API Errors in getStaticProps

  ```typescript

  // pages/[tradeSlug]/[countySlug]/[townSlug]/index.tsx

  export const getStaticProps: GetStaticProps = async (context) {

    const { tradeSlug, townSlug } = context.params;

    // Fetch data

    const data = await fetchTradespeople(${tradeSlug} in ${townSlug});

    if (!data) {

      return { notFound: true };

    }

    return {

      props: {

        tradespeople: data.result[0]?.items || [],

        tradeSlug,

        townSlug,

      },

      revalidate: false, // Cache indefinitely

    };

  };

  ```

10. Implement Incremental Static Regeneration (ISR)

10.1 Enable ISR in getStaticProps

  • Set Revalidation Time

  ```typescript

  export const getStaticProps: GetStaticProps = async (context) {

    // …existing code…

    return {

      props: {

        // …props

      },

      revalidate: 86400, // Revalidate every 24 hours

    };

  };

  ```

  • Benefits

  - Keeps content fresh without rebuilding the entire site.

  - Balances performance and data freshness.


Phase 4: Page Development

11. Build Page Types

11.1 Homepage

  • Features

  - Introduction to the site.

  - Quick links to popular trades, counties, and towns.

  - Include a search bar for users to find tradespeople.

11.2 Trade Pages

  • Path

  - pages/[tradeSlug]/index.tsx

  • Content

  - List all counties where the trade is available.

  - Brief description of the trade.

  • SEO

  - Title: Find the Best [Trade] in Ireland

  - Meta Description: Discover top-rated [trade] across Ireland. Browse by county and town.

11.3 County Pages

  • Path

  - pages/[tradeSlug]/[countySlug]/index.tsx

  • Content

  - List all towns in the county with available tradespeople.

  • SEO

  - Title: Top [Trade] in [County]

  - Meta Description: Find experienced [trade] in [County], Ireland. Contact professionals near you.

11.4 Town Pages

  • Path

  - pages/[tradeSlug]/[countySlug]/[townSlug]/index.tsx

  • Content

  - List all tradespeople in the town for the selected trade.

  • SEO

  - Title: Best [Trade] in [Town], [County]

  - Meta Description: Looking for [trade] in [Town]? Read reviews and contact the best professionals today.

11.5 Tradesperson Pages

  • Path

  - pages/tradesperson/[tradespersonId].tsx

  • Content

  - Detailed information about the tradesperson.

  - Include services offered, contact information, reviews, and ratings.

  • SEO

  - Title: [Business Name] - [Trade] in [Town], [County]

  - Meta Description: Learn about [Business Name], a reputable [trade] in [Town], [County]. See reviews and contact details.


Phase 5: SEO Optimization

12. Optimize Meta Tags and Descriptions

12.1 Dynamic SEO Metadata

  • Use next/head for Meta Tags

  ```jsx

  import Head from ‘next/head’;

  const Page = ({ trade, town, county }) (

    <>

      

        Best {trade} in {town}, {county} - Contact Today

        <meta

          name=“description”

          content={Find top-rated ${trade} in ${town}, ${county}. Read reviews and get in touch with professionals now.}

        />

      

      {/* Page Content */}

    </>

  );

  ```

13. Implement Structured Data

13.1 Add JSON-LD Structured Data

  • Enhance Search Visibility

  ```jsx

  import Head from ‘next/head’;

  const TradespersonPage = ({ tradesperson }) {

    const structuredData = {

      “@context”: “https://schema.org”,

      “@type”: “LocalBusiness”,

      “name”: tradesperson.name,

      “image”: tradesperson.image,

      “address”: {

        “@type”: “PostalAddress”,

        “streetAddress”: tradesperson.address,

        “addressLocality”: tradesperson.town,

        “addressRegion”: tradesperson.county,

        “postalCode”: tradesperson.postalCode,

        “addressCountry”: “IE”

      },

      “telephone”: tradesperson.phone,

      “url”: https://findatradespersonireland.com/tradesperson/${tradesperson.id},

      “aggregateRating”: {

        “@type”: “AggregateRating”,

        “ratingValue”: tradesperson.rating,

        “reviewCount”: tradesperson.reviewCount

      }

    };

    return (

      <>

        

          {/* Other meta tags */}

          <script

            type=“application/ld+json”

            dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}

          />

        

        {/* Page Content */}

      </>

    );

  };

  ```

14. Generate Sitemaps and robots.txt

14.1 Sitemap Generation

  • Use next-sitemap Package

  ```bash

  npm install next-sitemap

  ```

  • Configure next-sitemap.config.js

  ```javascript

  module.exports = {

    siteUrl: ‘https://findatradespersonireland.com’,

    generateRobotsTxt: true,

    // Exclude paths if necessary

    exclude: [‘/api/’, ‘/admin/’],

  };

  ```

  • Update package.json Scripts

  ```json

  “scripts”: {

    “postbuild”: “next-sitemap”

  }

  ```

14.2 robots.txt Configuration

  • Automatic Generation

  - next-sitemap will generate a robots.txt file based on your configuration.

  • Verify Crawling Permissions

  - Ensure that all dynamic pages are allowed to be crawled.


  • Update getStaticPaths

  - Include popular pages in the paths array to pre-render them at build time.

  ```typescript

  export const getStaticPaths: GetStaticPaths = async () {

    const popularPages = await getPopularPages(); // Implement this function

    const paths = popularPages.map(({ tradeSlug, countySlug, townSlug }) ({

      params: { tradeSlug, countySlug, townSlug },

    }));

    return {

      paths,

      fallback: ‘blocking’,

    };

  };

  ```


Actionable Items Checklist

Phase 1: Project Setup

  • Install Node.js and set up the development environment.

  • Initialize the Next.js project with TypeScript.

  • Set up version control with Git.

  • Configure ESLint and Prettier.

  • Install Tailwind CSS, shadcn/ui, and Lucide Icons.

  • Create static data files (counties.json, trades.json).

  • Set up environment variables.

Phase 2: UI/UX Foundation

  • Design and implement Header, Footer, and MainLayout components.

  • Create reusable UI components (cards, buttons, breadcrumbs).

  • Implement responsive navigation with icons.

Phase 3: Dynamic Routing and API Integration

  • Set up dynamic routing with fallback: 'blocking'.

  • Create API utility functions to interact with DataForSEO.

  • Handle errors and edge cases in data fetching.

  • Implement ISR in getStaticProps.

Phase 4: Page Development

  • Build the homepage with featured sections.

  • Develop trade, county, and town pages with dynamic content.

  • Create individual tradesperson pages with detailed information.

  • Ensure all pages are wrapped with MainLayout.

Phase 5: SEO Optimization

  • Optimize meta tags and descriptions using next/head.

  • Add JSON-LD structured data for rich search results.

  • Generate sitemaps using next-sitemap.

  • Configure robots.txt for proper crawling.

Conclusion

By following this comprehensive roadmap, you will develop a robust, SEO-friendly directory website for tradespeople in Ireland. The project is structured into manageable phases, allowing for focused development and ensuring that each aspect of the site is thoroughly addressed.


The homepage should look like this, use this styling throughout:

import Link from “next/link”

import { Button } from ”@/components/ui/button”

import { Input } from ”@/components/ui/input”

import { Search, Menu, MapPin, Phone, Mail, Facebook, Twitter, Instagram, Hammer, Wrench, Paintbrush, Truck, Scissors, Plug, HardHat, Shovel, Ruler, Thermometer, Zap, Droplet } from “lucide-react”

export default function HomePage() {

  const trades = [

    { name: “Carpenter”, icon: Hammer },

    { name: “Plumber”, icon: Wrench },

    { name: “Painter”, icon: Paintbrush },

    { name: “Electrician”, icon: Zap },

    { name: “Landscaper”, icon: Shovel },

    { name: “Roofer”, icon: HardHat },

    { name: “Mechanic”, icon: Truck },

    { name: “Hairdresser”, icon: Scissors },

    { name: “Tiler”, icon: Ruler },

    { name: “HVAC Technician”, icon: Thermometer },

    { name: “Locksmith”, icon: Plug },

    { name: “Plaster”, icon: Droplet },

    { name: “Bricklayer”, icon: HardHat },

    { name: “Glazier”, icon: Ruler },

    { name: “Flooring Specialist”, icon: Ruler },

    { name: “Gardener”, icon: Shovel },

  ]

  const counties = [“Dublin”, “Cork”, “Galway”, “Limerick”, “Waterford”, “Kerry”, “Mayo”, “Sligo”]

  return (

    

      

        

          

          

          

            

              

                

                  

                  <Input

                    type=“search”

                    placeholder=“Search for a tradesman…”

                    className=“pl-8 sm:w-[300px] md:w-[200px] lg:w-[300px]”

                  />

                

              

            

            

          

        

      

      

        

          

            

              

                

                  Find Skilled Tradesmen in Ireland

                

                

                  Connect with reliable local tradesmen for all your home improvement and repair needs.

                

              

              

                

                  

                  

                

              

            

          

        

        

          

            

            

              {trades.map((trade) (

                

                  <trade.icon className=“w-12 h-12 mb-2 text-green-600” />

                  

{trade.name}

                

              ))}

            

          

        

        

          

            

            

              {counties.map((county) (

                

                  

{county}

                  

                        {[…Array(3)].map((_, i) (

                          

  •                         

                            Town {i + 1}, {county}

                          

  •                     ))}

                      

                  

                

              ))}

            

          

        

      

      

        

          

            

              

About Us

              

                Irish Tradesmen Directory connects skilled professionals with customers across Ireland.

              

            

            

              

              

                    

  • About Us
  •                 

  • Contact Us
  •                 

  • Advertise
  •                 

  • Privacy Policy
  •               

            

            

              

Contact

              

                    

  • +353 1 234 5678
  •                 

  • info@irishtradesmendirectory.ie
  •                 

  • Dublin, Ireland
  •               

            

            

              

Follow Us

              

                

                  

                  Facebook

                

                

                  

                  Twitter

                

                

                  

                  Instagram

                

              

            

          

          

            © 2024 Irish Tradesmen Directory. All rights reserved.

          

        

      

    

  )

}

Json response for data for seo:

{

  “id”: “10201831-8018-0139-0000-075436f9f787”,

  “status_code”: 20000,

  “status_message”: “Ok.”,

  “time”: “8.0498 sec.”,

  “cost”: 0.002,

  “result_count”: 1,

  “path”: [

    “v3”,

    “serp”,

    “google”,

    “maps”,

    “live”,

    “advanced”

  ],

  “data”: {

    “api”: “serp”,

    “function”: “live”,

    “se”: “google”,

    “se_type”: “maps”,

    “keyword”: “electrician athenry”,

    “location_code”: 2372,

    “language_code”: “en”,

    “device”: “desktop”,

    “os”: “windows”,

    “depth”: 100

  },

  “result”: [

    {

      “keyword”: “electrician athenry”,

      “type”: “maps”,

      “se_domain”: “google.ie”,

      “location_code”: 2372,

      “language_code”: “en”,

      “check_url”: “https://google.ie/maps/search/electrician+athenry/@53.7797554,-7.3055309,7z?hl=en&gl=IE&uule=w+CAIQIFISCfsnQFzkullIEQj02840EnzP”,

      “datetime”: “2024-10-20 15:31:55 +00:00”,

      “spell”: null,

      “refinement_chips”: null,

      “item_types”: [

        “maps_search”

      ],

      “se_results_count”: 0,

      “items_count”: 88,

      “items”: [

        {

          “type”: “maps_search”,

          “rank_group”: 1,

          “rank_absolute”: 1,

          “domain”: “www.amelectricalgalway.ie”,

          “title”: “AM Electrical Services”,

          “url”: “https://www.amelectricalgalway.ie/”,

          “contact_url”: null,

          “contributor_url”: “https://maps.google.com/maps/contrib/107102679619149610662”,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 101,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 0,

            “3”: 0,

            “4”: 0,

            “5”: 101

          },

          “snippet”: null,

          “address”: null,

          “address_info”: {

            “borough”: null,

            “address”: null,

            “city”: null,

            “zip”: null,

            “region”: null,

            “country_code”: null

          },

          “place_id”: “ChIJQSZ1bZWWW0gRk8tevy2m0bg”,

          “phone”: “+353862325614”,

          “main_image”: “https://lh5.googleusercontent.com/p/AF1QipOlmPjjo2Ublez4WmuCE1e-X61JefXYG-8IwKBI=w408-h270-k-no”,

          “total_photos”: 4,

          “category”: “Electrician”,

          “additional_categories”: [

            “Service establishment”

          ],

          “category_ids”: [

            “electrician”,

            “establishment_service”

          ],

          “work_hours”: {

            “timetable”: {

              “sunday”: null,

              “monday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ],

              “tuesday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ],

              “wednesday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ],

              “thursday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ],

              “friday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ],

              “saturday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 12,

                    “minute”: 0

                  }

                }

              ]

            },

            “current_status”: “close”

          },

          “feature_id”: “0x485b96956d752641:0xb8d1a62dbf5ecb93”,

          “cid”: “13317608288525667219”,

          “latitude”: 53.343532499999995,

          “longitude”: -9.1348197,

          “is_claimed”: true,

          “local_justifications”: null,

          “is_directory_item”: false

        },

        {

          “type”: “maps_search”,

          “rank_group”: 2,

          “rank_absolute”: 2,

          “domain”: null,

          “title”: “Brennan Electrical Contractors Limited”,

          “url”: null,

          “contact_url”: null,

          “contributor_url”: null,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 1,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 0,

            “3”: 0,

            “4”: 0,

            “5”: 1

          },

          “snippet”: “Raford House, Athenry, Co. Galway”,

          “address”: “Raford House, Athenry, Co. Galway”,

          “address_info”: {

            “borough”: “Raford”,

            “address”: “Raford House”,

            “city”: “Athenry”,

            “zip”: null,

            “region”: “Co. Galway”,

            “country_code”: “IE”

          },

          “place_id”: “ChIJgUCBcAh3XEgRmfNirn8inUw”,

          “phone”: “+35391848820”,

          “main_image”: “https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=6VcHVlWMC4yx9N97uzwcUw&cb_client=search.gws-prod.gps&w=408&h=240&yaw=119.336586&pitch=0&thumbfov=100”,

          “total_photos”: 1,

          “category”: “Electrician”,

          “additional_categories”: null,

          “category_ids”: [

            “electrician”

          ],

          “work_hours”: {

            “timetable”: null,

            “current_status”: “close”

          },

          “feature_id”: “0x485c770870814081:0x4c9d227fae62f399”,

          “cid”: “5520606650008007577”,

          “latitude”: 53.285583499999994,

          “longitude”: -8.599885,

          “is_claimed”: false,

          “local_justifications”: null,

          “is_directory_item”: false

        },

        {

          “type”: “maps_search”,

          “rank_group”: 3,

          “rank_absolute”: 3,

          “domain”: “www.facebook.com”,

          “title”: “Watts Up Electrical”,

          “url”: “http://www.facebook.com/JohnWattsUpElectrical/”,

          “contact_url”: null,

          “contributor_url”: “https://maps.google.com/maps/contrib/106033714972078809627”,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 7,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 0,

            “3”: 0,

            “4”: 0,

            “5”: 7

          },

          “snippet”: “Carnmore Rd, Carnmore East, Co. Galway”,

          “address”: “Carnmore Rd, Carnmore East, Co. Galway”,

          “address_info”: {

            “borough”: “Carnmore East”,

            “address”: “Carnmore Rd”,

            “city”: null,

            “zip”: null,

            “region”: “Co. Galway”,

            “country_code”: “IE”

          },

          “place_id”: “ChIJLyDsMfaRW0gRrcggaxc0jeE”,

          “phone”: “+353874111744”,

          “main_image”: “https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=J0bLD5eoVK3-Cc_E7GHA-A&cb_client=search.gws-prod.gps&w=408&h=240&yaw=176.786&pitch=0&thumbfov=100”,

          “total_photos”: 4,

          “category”: “Electrician”,

          “additional_categories”: null,

          “category_ids”: [

            “electrician”

          ],

          “work_hours”: {

            “timetable”: null,

            “current_status”: “close”

          },

          “feature_id”: “0x485b91f631ec202f:0xe18d34176b20c8ad”,

          “cid”: “16252703905436190893”,

          “latitude”: 53.3046825,

          “longitude”: -8.932483999999999,

          “is_claimed”: true,

          “local_justifications”: null,

          “is_directory_item”: false

        },

        {

          “type”: “maps_search”,

          “rank_group”: 4,

          “rank_absolute”: 4,

          “domain”: null,

          “title”: “Electrician Galway”,

          “url”: null,

          “contact_url”: null,

          “contributor_url”: “https://maps.google.com/maps/contrib/100379334993315001055”,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 7,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 0,

            “3”: 0,

            “4”: 0,

            “5”: 7

          },

          “snippet”: null,

          “address”: null,

          “address_info”: {

            “borough”: null,

            “address”: null,

            “city”: null,

            “zip”: null,

            “region”: null,

            “country_code”: null

          },

          “place_id”: “ChIJj4EhP96XW0gRyXqTd91pldY”,

          “phone”: “+35391398147”,

          “main_image”: “https://lh5.googleusercontent.com/p/AF1QipNmZsozH3YavzsKn7GFD5wvEjwU42GahIq_69OX=w408-h271-k-no”,

          “total_photos”: 4,

          “category”: “Electrician”,

          “additional_categories”: [

            “Service establishment”

          ],

          “category_ids”: [

            “electrician”,

            “establishment_service”

          ],

          “work_hours”: {

            “timetable”: {

              “sunday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “monday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “tuesday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “wednesday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “thursday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “friday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ],

              “saturday”: [

                {

                  “open”: {

                    “hour”: 8,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 18,

                    “minute”: 0

                  }

                }

              ]

            },

            “current_status”: “open”

          },

          “feature_id”: “0x485b97de3f21818f:0xd69569dd77937ac9”,

          “cid”: “15462381295561308873”,

          “latitude”: 53.283911499999995,

          “longitude”: -9.0487465,

          “is_claimed”: true,

          “local_justifications”: null,

          “is_directory_item”: false

        },

        {

          “type”: “maps_search”,

          “rank_group”: 5,

          “rank_absolute”: 5,

          “domain”: “www.joyceelectrical.ie”,

          “title”: “Joyce Electrical and Solar PV”,

          “url”: “https://www.joyceelectrical.ie/”,

          “contact_url”: “https://www.joyceelectrical.ie/contact-us/”,

          “contributor_url”: “https://maps.google.com/maps/contrib/114700010964231363753”,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 78,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 1,

            “3”: 0,

            “4”: 0,

            “5”: 77

          },

          “snippet”: null,

          “address”: null,

          “address_info”: {

            “borough”: null,

            “address”: null,

            “city”: null,

            “zip”: null,

            “region”: null,

            “country_code”: null

          },

          “place_id”: “ChIJn_wxJAnHW0gR0b1cii6KMhY”,

          “phone”: “+353858349461”,

          “main_image”: “https://lh5.googleusercontent.com/p/AF1QipNWbfKhXEyo_TkaEGXRJZCBCriUW1n_kr0COLQy=w426-h240-k-no”,

          “total_photos”: 611,

          “category”: “Solar energy company”,

          “additional_categories”: [

            “Electric vehicle charging station contractor”,

            “Service establishment”

          ],

          “category_ids”: [

            “solar_energy_company”,

            “electric_vehicle_charging_station_contractor”,

            “establishment_service”

          ],

          “work_hours”: {

            “timetable”: {

              “sunday”: null,

              “monday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 19,

                    “minute”: 0

                  }

                }

              ],

              “tuesday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 19,

                    “minute”: 0

                  }

                }

              ],

              “wednesday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 19,

                    “minute”: 0

                  }

                }

              ],

              “thursday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 19,

                    “minute”: 0

                  }

                }

              ],

              “friday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 19,

                    “minute”: 0

                  }

                }

              ],

              “saturday”: [

                {

                  “open”: {

                    “hour”: 7,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 17,

                    “minute”: 0

                  }

                }

              ]

            },

            “current_status”: “close”

          },

          “feature_id”: “0x485bc7092431fc9f:0x16328a2e8a5cbdd1”,

          “cid”: “1599492750164409809”,

          “latitude”: 53.343532499999995,

          “longitude”: -9.1348197,

          “is_claimed”: true,

          “local_justifications”: null,

          “is_directory_item”: false

        },

        {

          “type”: “maps_search”,

          “rank_group”: 6,

          “rank_absolute”: 6,

          “domain”: null,

          “title”: “Ray Regan Electrical”,

          “url”: null,

          “contact_url”: null,

          “contributor_url”: “https://maps.google.com/maps/contrib/116458503539380477663”,

          “rating”: {

            “rating_type”: “Max5”,

            “value”: 5,

            “votes_count”: 9,

            “rating_max”: null

          },

          “hotel_rating”: null,

          “price_level”: null,

          “rating_distribution”: {

            “1”: 0,

            “2”: 0,

            “3”: 0,

            “4”: 0,

            “5”: 9

          },

          “snippet”: null,

          “address”: null,

          “address_info”: {

            “borough”: null,

            “address”: null,

            “city”: null,

            “zip”: null,

            “region”: null,

            “country_code”: null

          },

          “place_id”: “ChIJx-ABqb55XEgRwCljAY6NZeY”,

          “phone”: “+353867256869”,

          “main_image”: “https://lh5.googleusercontent.com/p/AF1QipOO2Dvc0iUA_inOUxDcj-z96k8SJY-s1-nQ7sNk=w408-h725-k-no”,

          “total_photos”: 4,

          “category”: “Electrician”,

          “additional_categories”: [

            “Service establishment”

          ],

          “category_ids”: [

            “electrician”,

            “establishment_service”

          ],

          “work_hours”: {

            “timetable”: {

              “sunday”: [

                {

                  “open”: {

                    “hour”: 0,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 0,

                    “minute”: 0

                  }

                }

              ],

              “monday”: [

                {

                  “open”: {

                    “hour”: 0,

                    “minute”: 0

                  },

                  “close”: {

                    “hour”: 0,

                    “minute”: 0

                  }

                }

Documentation:

curl —location —request POST ‘https://api.dataforseo.com/v3/serp/google/maps/live/advanced’ \

—header ‘Authorization: Basic aGVsbG9AaGFyYm9yc2VvLmFpOjQ0YzE4YWY4ZmIwYWVlMDg=’ \

—header ‘Content-Type: application/json’ \

—data-raw ’[{“keyword”:“electrician athenry”, “location_code”:2380, “language_code”:“en”, “device”:“desktop”, “os”:“windows”, “depth”:100}]’

**