{"id":2408,"date":"2025-12-31T12:17:15","date_gmt":"2025-12-31T12:17:15","guid":{"rendered":"https:\/\/rayobyte.com\/community\/?post_type=scraping_project&#038;p=2408"},"modified":"2025-12-31T12:17:15","modified_gmt":"2025-12-31T12:17:15","slug":"how-to-build-a-google-reviews-scraper-using-python","status":"publish","type":"scraping_project","link":"https:\/\/rayobyte.com\/community\/scraping-project\/how-to-build-a-google-reviews-scraper-using-python\/","title":{"rendered":"How to Build a Google Maps Reviews Scraper using Python"},"content":{"rendered":"<h1>Create a Google Maps Reviews Scraper using Python: Extract Users, User Reviews and Star Rating.<\/h1>\n<h2>Table of Content<\/h2>\n<p><a href=\"#introduction\">Introduction<\/a><br \/><a href=\"#why\">Why Scrape Google Reviews?<\/a><br \/><a href=\"#prerequisites\">Prerequisites<\/a><br \/><a href=\"#step1\">Step 1: Import the libraries and configure the logging messages<\/a><br \/><a href=\"#step2\">Step 2: Setting Up Playwright<\/a><br \/><a href=\"#step3\">Step 3: Navigating to Google Maps<\/a><br \/><a href=\"#step4\">Step 4: Clean the reviews text function<\/a><br \/><a href=\"#step5\">Step 5: Extracting Reviews<\/a><br \/><a href=\"#step6\">Step 6: Saving Data<\/a><br \/><a href=\"#step7\">Step 7: Running the Script<\/a><br \/><a href=\"#best-practices\">Best Practices for Scraping<\/a><br \/><a href=\"#conclusion\">Conclusion<\/a>\u00a0<\/p>\n<h2 id=\"introduction\">Introduction<\/h2>\n<p>Google Reviews are a critical factor in a business&#8217;s online reputation. In this tutorial, we&#8217;ll guide you through building a Google Reviews scraper using Python. You&#8217;ll learn how to extract and analyze reviews from Google, allowing you to monitor customer feedback and make data-driven decisions for your business.<\/p>\n<h2 id=\"why\">Why Scrape Google Reviews?<\/h2>\n<p>Google Reviews influence how customers perceive businesses online. With millions relying on these reviews to decide where to dine, shop, or stay, collecting and analyzing them can offer key insights into customer satisfaction, trends, and areas needing improvement.<\/p>\n<p>Scraping Google Reviews allows businesses to:<\/p>\n<ul>\n<li>Monitor customer feedback in real-time.<\/li>\n<li>Identify trends or recurring issues.<\/li>\n<li>Analyze competitors&#8217; reviews for benchmarking.<\/li>\n<\/ul>\n<p>In this guide, we\u2019ll show you how to set up and execute a Google Reviews scraper using Python and Playwright, a powerful library for automating browsers.<\/p>\n<h2 id=\"prerequisites\">Prerequisites<\/h2>\n<p>Before diving into the code, make sure you have the following tools and libraries installed:<\/p>\n<ol>\n<li>Python 3.8 or higher<\/li>\n<li>Node.js (required for Playwright installation)<\/li>\n<li>The following Python libraries: <code>playwright<\/code>, <code>pandas<\/code>, <code>bs4<\/code> (BeautifulSoup for HTML parsing), <code>emoji<\/code> (to clean the emoji in the reviews), and <code>logging<\/code>.<\/li>\n<\/ol>\n<p>Install these libraries using pip:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pip install playwright pandas emoji<\/pre>\n<p><strong>Note<\/strong>: Initialize Playwright with the following command to download the necessary browser binaries:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">playwright install<\/pre>\n<h2 id=\"step1\">Step 1: Import the libraries and configure the logging messages<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from playwright.sync_api import sync_playwright\nimport pandas as pd\nimport re\nimport emoji\nimport logging\nimport time\n\n# Configure logging\nlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\nlogger = logging.getLogger(__name__)<\/pre>\n<h2 id=\"step2\">Step 2: Setting Up Playwright<\/h2>\n<p>Playwright is a Python library for automating browsers. Unlike Selenium, Playwright is faster and offers more advanced features like built-in proxy support and better handling of dynamic content.<\/p>\n<p>To get started, import the necessary Playwright modules and set up a browser instance:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def initialize_browser():\n    playwright = sync_playwright().start()\n    browser = playwright.chromium.launch(headless=False)\n    context = browser.new_context()\n    page = context.new_page()\n    return playwright, browser, page<\/pre>\n<p>This function initializes a Chromium browser and opens a new page for interaction.<\/p>\n<h2 id=\"step3\">Step 3: Navigating to Google Maps<\/h2>\n<p>To scrape Google Reviews, you need to search for a business on Google Maps and navigate to its reviews section. Use the following function:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def search_google_maps(page, business_name):\n    page.goto(\"https:\/\/www.google.com\/maps\")\n    search_box = page.locator(\"input[id='searchboxinput']\")\n    search_box.fill(business_name)\n    search_box.press(\"Enter\")\n    page.wait_for_timeout(5000)<\/pre>\n<h2 id=\"step4\">Step 4: Clean the reviews text function<\/h2>\n<p>Clean text by removing emojis and extra whitespace..<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def clean_text(text):\n    # Remove emojis\n    text = emoji.replace_emoji(text, replace='')\n    \n    # Remove extra whitespace\n    text = re.sub(r's+', ' ', text).strip()\n    \n    return text<\/pre>\n<h2 id=\"step5\">Step 5: Extracting Reviews<\/h2>\n<p>Google dynamically loads reviews, so scrolling is necessary to load additional content. Playwright handles this effectively:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def scrape_reviews(page, max_reviews=60):\n    reviews = []\n    try:\n        # Wait for the business details to load\n        page.wait_for_timeout(5000)\n        \n        # Locate and click the reviews section\n        logger.info(\"Searching for reviews section\")\n        review_section = page.get_by_role('tab', name=\"Reviews\")\n        review_section.click()\n        page.wait_for_timeout(3000)\n\n        # Scroll to load more reviews\n        logger.info(\"Loading reviews...\")\n        for _ in range(10):\n            page.mouse.wheel(0, 5000)\n            page.wait_for_timeout(2000)\n\n        # Extract reviews\n        review_elements = page.locator(\"div[class*='jJc9Ad']\")\n        logger.info(f\"Found {review_elements.count()} reviews\")\n\n        for element in review_elements.all()[:max_reviews]:\n            reviewer = element.locator(\"div[class*='d4r55']\").inner_text()\n            rating = element.locator(\"span[aria-label]\").get_attribute(\"aria-label\")\n            review_text = element.locator(\"span[class*='wiI7pd']\").inner_text()\n\n            reviews.append({\n                \"Reviewer\": clean_text(reviewer),\n                \"Rating\": rating,\n                \"Review\": clean_text(review_text)\n            })\n        \n    except Exception as e:\n        logger.error(f\"Error during scraping: {e}\")\n    \n    return reviews<\/pre>\n<h2 id=\"step6\">Step 6: Saving Data<\/h2>\n<p>Once the reviews are scraped, save them in a structured format like CSV for further analysis:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def save_reviews_to_csv(reviews, filename=\"google_reviews.csv\"):\n    df = pd.DataFrame(reviews)\n    df.to_csv(filename, index=False, encoding='utf-8')\n    logger.info(f\"Reviews saved to {filename}\")<\/pre>\n<p>Replace the <code>filename<\/code> according to your preferences.<\/p>\n<h2 id=\"step7\">Step 7: Running the Script<\/h2>\n<p>Finally, tie everything together in a main function:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def main():\n    business_name = \"Panzerotti Luini\"\n    \n    # Initialize browser\n    playwright, browser, page = initialize_browser()\n    \n    try:\n        # Search and scrape reviews\n        search_google_maps(page, business_name)\n        reviews = scrape_reviews(page, max_reviews=200)\n        \n        # Save results\n        save_reviews_to_csv(reviews)\n    \n    except Exception as e:\n        logger.error(f\"Unexpected error: {e}\")\n    \n    finally:\n        # Add a longer wait before closing\n        page.wait_for_timeout(5000)\n        browser.close()\n        playwright.stop()\n\nif __name__ == \"__main__\":\n    main()<\/pre>\n<p>Note: Replace the <code>business_name<\/code> with the business you want to scrape.<\/p>\n<p>Once you run the scraper, a csv file will be created in your directory. Here\u2019s the example:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Reviewer,Rating,Review\nH L,5 stars,Delicious! They have daily specials and seasonal flavors. Came in November and their savory special was a pesto and mozzarella and the sweet savory was a chestnut and almond. Got the seasonal sweet pastry and a classic ham and mozzarella. \u2026\nOksana Vishnevskaia,4 stars,\"There's usually a long line here, but it moves very quickly. I really enjoyed the savory pastries, especially the ones with ham and salami. \u2026\"\nturki chayma,5 stars,\"You can only say WAW about a such place . Big respect for the places where they serve everything fresh and hot. For me it\u2019s a must!!! You should try the classic fried and baked, bothhhh!!! then choose any other \u2026\"\nYu-Ting,3 stars,Tried the spicy salami and cheese. It was a good walking snack. The dough was lightly crisp on the outside and fluffy on the inside. The salami and cheese were warm and not hot which was a little disappointing.\nThanath Gopalan,5 stars,There was a queue but it moved really fast. Had the mozzarella and ricotta cheese. Was really good. Absolutely worth it.\nMatthew Garcia,5 stars,\"Not much I can add here as it\u2019s already extremely popular but it\u2019s justified! Very efficient operation and guaranteed fresh product because it\u2019s so busy. Savory and sweet flavors for everyone. Quick, easy, delicious, authentic. This must be what real \u201cfast food\u201d is in Milan. A must-visit!\"\n\u90fd\u5a1f,3 stars,\"A long queue. The girls have no smiles, no time to explain. Just order and leave, half a minute. Ordered one fried with tomato and mozzarella, one baked with spinach. Don\u2019t expect too much, just exactly the same as pizza.\"\nReza Nobahar,4 stars,Does it worth the wait? It definitely did to try something Milan famous for and it\u2019s part of local experience however nothing too exciting or super amazing that make you go back there everyday \u2026\nDr Toey,4 stars,I was expecting more after the reviews but the panzerotti was not that fresh and crispy. Looks like it was cooked a while ago before putting in the display.\nIrmak Y\u0131lmaz,5 stars,I waited like 15 minutes. (I arrived at 12.00). I tried tometo+mozzarella+pesto (panzerotti of the day) one and the ricotta+spinach one. They were sooo good. I loved them both. It was fried and the ingredients were incredibly good and \u2026\nLu ca,5 stars,little pizza doughnuts filled with goodness! so good if you go early or late in the day the queues are short! lunchtime there is about a 15min wait.\nSangeeta Chandra,4 stars,\"Good panzerotti, quick snack to grab. Ordered the spicy salami and mozzarella which was good. This one was deep fried, so one would be more than enough. Would recommend sharing if you prefer a lighter snack. They do have baked options as well.\"\nJ B,5 stars,\"Having never had Panzerotti, we didn\u2019t really know what to expect, but since this place has been in business since 1888, you know they are doing everything right! We were in Italy for a total of two weeks, and these Panzerotti have to be \u2026\"\nMuhammet Ikbal Karatas (Alumni),3 stars,\"Cannolo we tried wasn\u2019t fresh, it was soft and the cream wasn\u2019t as good as the cannolis we tried elsewhere. \u2026\"\nIdal\u00e9cio Rosa,5 stars,Beautiful place. Delicious Italian panzerotti in Milan just next to Duomo. Please be ready to queue it's a busy place but with quick service. I really recommend it!\nDodd Ouyang,5 stars,hungry? don't want spontini? saw a huge line-up and afraid it's gonna take half a day? \u2026\nBianca Allery,3 stars,Fairly ok. I\u2019m not quite sure why it\u2019s so popular as it wasn\u2019t anything to write home about. The 4 cheeses one was the best! The baked spinach and ricotta is a no-go. The ham and mozzarella was ok.\nItsjustnathalie,4 stars,\"I went twice, once during the week and once on a Saturday. During the week it was absolutely amazing &amp; delicious and I was very excited to come back. On Saturday though I was a little disappointed, my panzerotto nearly didn\u2019t have any \u2026\"\nAnna,5 stars,When we saw the line we were afraid that this place is just another tourist trap. The truth is that the panzerotti are absolutely amazing. We came twice during our stay. \u2026\nSeher Baysal,3 stars,Panzerotti was ok but pizza wasn\u2019t good. And please DO NOT EAT ANY DESSERT here. I\u2019ve tried a few different type of dessert and I didn\u2019t like it at all.\nEdwin Labja,5 stars,\"If you find yourself wandering the vibrant streets of Milan, make sure to join the buzz at Luini, right by Piazza Duomo. Known for its heavenly panzerotti, this little bakery has been a beloved Milanese institution since 1888, and it\u2019s \u2026\"\nRana,5 stars,\"By far the best thing I\u2019ve ever eaten in my life. We tried the pistachio, ricotta and chocolate, and the best one, mozzarella and tomato. Went back so many times for more and it was still delicious!\"\nNuha Khalil,5 stars,I tried Luini panzerotti with mozzarella and pomodoro it was extremely delicious the dough itself is totally different so fluffy and light and tasty The only problem is that it's small \u2026\nargiro mpn,5 stars,\"We found the place just as it was opening, and there was only a small line outside, so we waited. The Panzerotti were warm, very tasty, and reasonably priced.\"\nDhanuka Perera,5 stars,\"Tried their fried panzerotti. Task is amazing and and must have food in Milan. Lot of varieties choose from, tried the onion and olive one.\"\nEhab Badawy,4 stars,One of the best places in Italy to have fried Panzerotti in the world. They are super fresh. The dough is very light. I always thought that it would be oily when fried but to my surprise it was not. Just it is good to give you the taste you are looking for without being oily. We love it. You should try it when you\u2019re in Milan.\nRason Chan,5 stars,\"Long line. Really long line. I had two creatures who were chatting with the guy in front of me pretended that they know each other and then cut in line. When I asked what they were doing, they just played dumb, saying they needed to go to this or that place\u2014total excuses. Watch out for animals like that.\"\nLana Figueroa,3 stars,My husband liked the cheese and tomato sauce. I liked the ham and cheese but abit too oily for me. The lady wasn\u2019t very nice I was trying to say in Italian which I spoke fine in but she seemed annoyed and there was no big line it was not necessary.\nAndrei Jaume Willenska,5 stars,\"I had never tried a panzerotti, but I checked this place out in the middle of downtown Milan and it did not disappoint. I ate the mozzarella and salami picante panzerotti and man, this thing was delicious. There was a bit of a line, but it \u2026\"\nStacee Kersley,5 stars,\"Quick drop into this little spot while we waited for our timed entry to the Duomo and what a find! We've had other panzerotti before that were good, but greasy. These were great because we had the option of fried or baked. We only had \u2026\"\nZuzanna Tulej,5 stars,\"Very good panzerotti, a great choice for a quick and cheap snack. 3\u20ac per piece, a good selection of vegetarian options. It\u2019s quite fatty, but also delicious. I really recommend this place! \u2026\"\nJimkaf_07,5 stars,\"Amazing panzerotti , really tasty , exactly what you need to start the day off right in Milan ! Make sure to get there early , because they sell out fast ! 10\/10\"\nFanzhu Deng,5 stars,\"Was recommended by my friend to try some Italian street food. Ordered mozzarela with tomatoes. Completely blew my mind. Very busy place, service was quick, which we had more time to ask about the menu and try more flavours.\"\nmerel swinkels,5 stars,\"Very quick service, there is a queue. The food is very delicious and also very cheap. It is 3 euros for a panzerotti! I would definitely recommended if you are close to the duomo and want a quick bite.\"\nDaiana G,5 stars,\"Great place of Panzerotti! 3\u20ac each, the original one is fried with mozzarella and pomodoro. There's always queue but it goes fastttt (italian pronunciation xd)\"\nJun Ren Ong,5 stars,\"Long queue but it moves fast. I got the fried panzerotti (essientially fried dough with ingredients), taste pretty good. Recommene to try if you are in the area. I got the seasonal special 4 cheese flavour.\"\nLorenzo A. G,5 stars,What a place! One the best street food you can find in Milan! Panzerotto with tomato and mozzarella simply perfect.\nMateusz Nowak,5 stars,\"panzerotti is simply heaven in your mouth. delicious, really delicious.\"\nAbhirup Bose,5 stars,\"Tucked away in a tiny lane next to the Duomo, it\u2019s a very tasty food. Waiting in line is absolutely worth the food you get. Besides, the line moves pretty fast so it\u2019s not a long wait. It\u2019s inexpensive and very tasty food. We had a fried \u2026\"\nAsianfoodninja,5 stars,\"Popular street food in Milan The queue can be really long and busy, lines start before they open. \u2026\"\nNicola Glaasford,5 stars,Amazing sandwich... Shaped like a calzone but the dough was more bread-like and a little sweet... We got the prosciutto and cheese and hot salami and cheese and both were fantastic.... heard about the big queues but I guess we got lucky cos \u2026\nWafa azzam,3 stars,\"It is okay, but if your stomach is sensitive; never choose the fried one.\"\nLindy L,4 stars,\"There was a massive queue when we went, but the wait wasn't too long. We tried 4 different types of Panzerotti's. \u2026\"\nSneha Naran,4 stars,Quick and fast service. We tried the spinach and ricotta and tomato onion and olives. Both good but the latter better.\nGohar Jamal,5 stars,\"Panzerotti Luini near Duomo in Milan is a must-visit! The panzerotti are deliciously crispy and filled with rich, flavorful ingredients. The staff is friendly, and the location is perfect for a quick, satisfying meal after sightseeing. Highly recommend!\"\nRodanthi Lala,5 stars,Great food. Try focaccia and panzerotti.\nAnita fari,3 stars,\"The panzerotti was delicious, staff not so happy\"\nMarij\u00e1n R\u00f3ka,5 stars,When I was a child in my hometown we had a place where Panzerotti was available. So roughly 35 years later I was able to try again this delicious food and after \u2026\nNandita V,5 stars,Super delicious savory snack! It's quite famous for their long standing presence and rightly so. The \u2026\nJohn Mauro,5 stars,\"I know this place since I was little l, and now I don\u2019t live in Italy anymore. But every time I come in Milano to visit my friends and family, Luini is always a must stop for me. \u2026\"\nMidhun Ogirala,5 stars,The panzerotti here is my favourite. Other items here are good as well. The queue is very big usually but moves fast . If there was dine in it would've been great.\nMelvrick Goh,5 stars,Loved the sweet panzerotti\u2019s. Outstanding. Try everything if we could have. The orange cream cheese cannoli was bomb \u2026\nElton Donnel Cabardo (Tonnex),5 stars,\"Worth the hype! The panzerottis are cheap and absolutely delicious. Don\u2019t get intimidated by the line, It moves really fast.\"\nZubaer Ahmad,4 stars,Super delicious Italian snacks. Really liked the tomato cheese one. Also very affordable. My suggestion is go for the fried version rather than the baked one.\nSeema Elremmash,5 stars,This fried pocket was my favorite thing I\u2019ve had on my whole trip to Italy. I love that they are fresh too.\nKhaled Saif,4 stars,\"The mozzarella and tomato is definitely the best choice here \u2013 fresh, flavorful, and a perfect balance of ingredients. However, be prepared to eat while standing since there are no seats or tables available. The place tends to get a bit crowded with some traffic and a queue, but the food is worth the wait!\"\nkhaled moujahed,4 stars,\"Before my visit to Milan, everyone recommended that I try a restaurant with an Italian specialty that can\u2019t be found elsewhere. So, I decided to discover this panzerotti, and I absolutely loved it. It reminded me of Tunisian fricass\u00e9e, but with a different filling. I highly recommend you try it!\"\nMuskan Harpalani,3 stars,Overrated place in Milan\u2026.its tasty but its not worth the hype\u2026cheap snack in Milan.\nJordan Glick,5 stars,The pepperoni and cheese rolls are next level good. Highly recommend coming early to avoid the wait.\nMuriel Baumeister,5 stars,\"When we arrived there were a lot of traffic. We took a baked Panzerotti with tomato and Mozzarella. It tasted really good . We definitely will come back when we are in beautiful Milano again. Quick service, the food is for take away. \u2026\"\n<\/pre>\n<h2 id=\"best-practices\">Best Practices for Scraping<\/h2>\n<ol>\n<li><strong>Add Delays Between Requests<\/strong><\/li>\n<\/ol>\n<p>Websites often monitor the frequency of requests to prevent scraping. Adding small delays between actions can mimic human behavior and reduce the risk of getting blocked. In our script, you can adjust the page.wait_for_timeout() calls for this purpose.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">page.wait_for_timeout(3000) # 3-second delay<\/pre>\n<p><strong>2. Use Proxy Rotation<\/strong><\/p>\n<p>For scraping a large number of reviews, especially across multiple businesses, proxy rotation is essential. It ensures your requests originate from different IPs, avoiding detection and blocking. <a href=\"https:\/\/rayobyte.com\/products\/residential-proxies\/\">Rayobyte<\/a> offers reliable proxy services.<\/p>\n<p>Proxy Rotation Setup with <a href=\"https:\/\/rayobyte.com\/products\/residential-proxies\/\">Rayobyte<\/a>.<\/p>\n<p>Below is a script to integrate proxies into the Playwright setup:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def initialize_browser_with_proxy(proxy_url):\n    playwright = sync_playwright().start()\n    browser = playwright.chromium.launch(\n        headless=False, \n        proxy={\"server\": proxy_url}\n    )\n    context = browser.new_context()\n    page = context.new_page()\n    return playwright, browser, page\n\ndef main():\n    # Example usage\n    proxy_list = [\"http:\/\/username:password@proxy1.rayobyte.com:1234\", \n              \"http:\/\/username:password@proxy2.rayobyte.com:1234\"]\n\n    business_name = \"Panzerotti Luini\"\n    \n    for proxy in proxy_list:\n        playwright, browser, page = initialize_browser_with_proxy(proxy)\n        try:\n            search_google_maps(page, business_name)\n            reviews = scrape_reviews(page, max_reviews=100)\n            save_reviews_to_csv(reviews, filename=f\"reviews_with_{proxy.split('@')[1]}.csv\")\n        finally:\n            browser.close()\n            playwright.stop()\n\nif __name__ == \"__main__\":\n    main()<\/pre>\n<p><strong>3. Respect Website Terms of Service<\/strong><\/p>\n<p>Before scraping, always check the website&#8217;s Terms of Service. Use the data responsibly and ensure compliance with local laws and regulations.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>With this Google Reviews scraper, you can efficiently gather customer feedback and analyze it for actionable insights. Using Playwright ensures smooth handling of dynamic content, making the scraping process seamless and efficient.<\/p>\n<p>This tutorial offers a foundation\u2014extend it to scrape other details or integrate with analytics tools for deeper insights.<\/p>\n<p>If you encounter any issues or have questions while following this tutorial, feel free to leave a comment below. I\u2019d be happy to help you troubleshoot and provide additional guidance!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Create a Google Maps Reviews Scraper using Python: Extract Users, User Reviews and Star Rating. Table of Content IntroductionWhy Scrape Google Reviews?PrerequisitesStep 1: Import the&hellip;<\/p>\n","protected":false},"author":25,"featured_media":2409,"comment_status":"open","ping_status":"closed","template":"","meta":{"rank_math_lock_modified_date":false},"categories":[],"class_list":["post-2408","scraping_project","type-scraping_project","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/scraping_project\/2408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/scraping_project"}],"about":[{"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/types\/scraping_project"}],"author":[{"embeddable":true,"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/comments?post=2408"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/media\/2409"}],"wp:attachment":[{"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/media?parent=2408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rayobyte.com\/community\/wp-json\/wp\/v2\/categories?post=2408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}