{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/Y7Ujitu6qNgBDWrWtfAJ/vcb3jFxSRbk7cPjGtXD7/M5d1JC0lW-63.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{Link as i}from\"framer\";import{motion as a}from\"framer-motion\";import*as n from\"react\";export const richText=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"If you\u2019re renting out a condo, apartment, or home on Airbnb you probably want to make sure you\u2019re making as much money as possible from your investment property. Because the best Airbnb hosts don\u2019t just pick a price at random and just wait to see what happens with their listing. They do the research to figure out exactly how much they can charge for their listing by comparing it to similar places\u2014including prices, features, and reviews. You can either do all this research manually (which can take dozens of hours!) or you can speed things up by learning how to scrape Airbnb listings automatically.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Overview of Airbnb Listing Scraping\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"444\",src:\"https://framerusercontent.com/images/UTX7mOOhLtONxftuOsm0cycU.png\",srcSet:\"https://framerusercontent.com/images/UTX7mOOhLtONxftuOsm0cycU.png?scale-down-to=512 512w,https://framerusercontent.com/images/UTX7mOOhLtONxftuOsm0cycU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UTX7mOOhLtONxftuOsm0cycU.png 1600w\",style:{aspectRatio:\"1600 / 888\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"In the labyrinth of data that surrounds us, lies untapped potential that can transform your business strategies and outcomes. One such treasure trove of data rests with Airbnb, an online marketplace that connects people looking to rent their homes with people who are seeking accommodations. Airbnb currently covers more than 100,000 cities and virtually every country around the globe. Imagine the wealth of information that can be harvested from its listings!\"}),/*#__PURE__*/e(\"p\",{children:'Airbnb listing scraping, to put it simply, is the process of extracting or \"scraping\" data from Airbnb listings. This data could range from the price of various listings, their locations, amenities offered, to the number of reviews and ratings. The possibilities are as vast as the ocean of data itself.'}),/*#__PURE__*/t(\"p\",{children:[\"Just like \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-scrape-twitter\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"scraping Twitter data\"})}),\" or learning \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-export-instagram-comments-and-profile-data-to-google-sheets\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"how to export Instagram comments and profile data to Google Sheets\"})}),\", Airbnb listing scraping can provide an abundance of data that can be analyzed and utilized for various purposes, particularly in the realm of sales and marketing.\"]}),/*#__PURE__*/t(\"p\",{children:[\"This might seem like a complex task, but with the right tools (like \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airbnb scraper\"})}),\"), it becomes a cakewalk. In this blog, we'll dive into the depths of Airbnb listing scraping, exploring its importance, how it can boost your sales, and even touch upon its legal aspects. So buckle up, and let's embark on this data-driven journey together!\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is Airbnb Listing Scraping?\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding the Concept\"})}),/*#__PURE__*/e(\"p\",{children:\"Airbnb Listing Scraping, in its most rudimentary form, is the process of extracting data from Airbnb's platform. To put it simply, it's akin to sifting through the vast ocean of information on Airbnb's website to retrieve the golden nuggets of data that you seek.\"}),/*#__PURE__*/e(\"p\",{children:\"Imagine a giant digital sieve that filters through listing details, prices, locations, ratings, reviews, and host details. That's what Airbnb Listing Scraping is all about. You might be wondering why someone would go to such lengths. Well, let's explore the significance of this data extraction process.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Importance of Scraping Airbnb Listings\"})}),/*#__PURE__*/e(\"p\",{children:\"The main reason for the growing popularity of Airbnb Listing Scraping lies in the wealth of information it uncovers. As a stakeholder in the hospitality or real estate industry, or even a data scientist, these troves of data can be pivotal in shaping your strategies and making informed decisions.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Competitive Intelligence\"}),\": With Airbnb data at your fingertips, you can monitor your competitors' strategies, from pricing to customer engagement methods.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Market Trend Analysis\"}),\": Trends come and go, and the housing market is no exception. By scraping Airbnb listings, you can stay ahead of the curve by identifying emerging market trends, popular locations, and more.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Optimized Pricing\"}),\": Setting the right price isn't a shot in the dark. With data gathered from Airbnb scraping, you can understand the pricing trends and set competitive prices for your properties.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Improved Customer Experience\"}),\": From examining top-rated listings, you can glean insights into what makes a property popular among users. You can then incorporate these elements into your own listings, thereby enhancing the customer experience.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In essence, \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airbnb scraping\"})}),\" is a key to unlock the treasure chest of data-driven insights that can escalate your business to new heights. So, the next time someone talks about scraping Airbnb listings, you'll know why it is a big deal.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Scrapping Airbnb Listings Can Boost Sales\"})}),/*#__PURE__*/e(\"p\",{children:\"As you delve deeper into the world of data scraping, you'll discover how it can significantly enhance your sales strategy. Let's explore how scraping Airbnb listings could be your secret sauce to growth.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Competitive Analysis\"})}),/*#__PURE__*/e(\"p\",{children:\"In the fiercely competitive landscape of vacation rentals, keeping an eye on your competitors is crucial. With Airbnb listing scraping, you're not just a spectator, but an informed strategist.\"}),/*#__PURE__*/e(\"p\",{children:\"By extracting data from numerous listings, you can analyze the offerings, amenities, and ratings of your competitors. This treasure trove of data provides you with insights into what guests are looking for, what they appreciate, and where your competitors might be falling short. Subsequently, you can tweak your listings to meet these expectations and stand out in the crowd.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Pricing Strategy\"})}),/*#__PURE__*/e(\"p\",{children:\"Setting the right price is a delicate balancing act. Charge too much, and you'll scare off potential guests. Price too low, and you leave money on the table. Thankfully, scraping Airbnb listings can help you strike the perfect balance.\"}),/*#__PURE__*/e(\"p\",{children:\"By examining the prices of similar accommodations in your area, you can determine where your pricing stands. If your prices are significantly higher, it might explain why you're struggling to secure bookings. Conversely, if you're on the low end of the spectrum, there might be room to increase your prices without affecting demand.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Learning from Top-Performing Listings\"})}),/*#__PURE__*/e(\"p\",{children:\"Airbnb listing scraping isn't just about keeping tabs on your competitors; it's also a chance to learn from the best. By analyzing top-performing listings, you can uncover the secret to their success.\"}),/*#__PURE__*/e(\"p\",{children:\"What type of photos are they using? How are they describing their space? What unique features or amenities do they offer? Answering these questions can provide you with a blueprint for success. In essence, you're not just copying them, but learning from their best practices and applying them to your own listings.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Identifying Market Trends\"})}),/*#__PURE__*/e(\"p\",{children:\"As with any industry, staying ahead of the curve is key in the vacation rental market. With Airbnb listing scraping, you can identify emerging trends before they become mainstream.\"}),/*#__PURE__*/e(\"p\",{children:\"Are more people looking for eco-friendly accommodations? Is there a growing demand for rentals with home offices? These are the types of trends you can spot by analyzing a large number of listings. Armed with this knowledge, you can adapt your offerings to meet the evolving needs of your guests.\"}),/*#__PURE__*/e(\"p\",{children:\"In conclusion, scraping Airbnb listings isn't just about collecting data; it's about turning that data into actionable insights. Whether it's refining your pricing strategy, learning from the best, or staying ahead of market trends, Airbnb listing scraping is an invaluable tool in your arsenal.\"}),/*#__PURE__*/t(\"p\",{children:[\"To get started with scraping Airbnb, check out this guide on \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-scrape-airbnb-data\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"how to scrape airbnb data\"})}),\" and use this handy \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"airbnb scraper\"})}),\". They provide a step-by-step walkthrough to help you navigate through the process, ensuring you get the most out of your data scraping efforts.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to Scrape Airbnb Listings\"})}),/*#__PURE__*/e(\"p\",{children:\"Now that we've covered the why, let's dive into the how of Airbnb listing scraping. This process may seem complex at first, but with the right tools and guidance, it's absolutely achievable.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tools Required\"})}),/*#__PURE__*/e(\"p\",{children:\"Before embarking on your scraping journey, you'll need to arm yourself with the appropriate tools. Here are some essentials:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Web scraping tool: This is your primary weapon. A web scraping tool allows you to extract data from a website's HTML. There are several options available, some of which require coding knowledge, while others are more user-friendly. A great choice for beginners and pros alike is an \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"airbnb scraper\"})}),\" like \",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Magical\"})}),\". It\u2019s no-code, easy to use, and free to get started.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Data analyzing software: Once you've scraped your data, you'll need to analyze it. Tools like Excel or Google Sheets are commonly used for this purpose. More advanced users may opt for software like Python or R.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"VPN (Virtual Private Network): This is a necessary precaution to protect your privacy while scraping. A VPN hides your IP address, making your scraping activities anonymous.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step-by-step Guide\"})}),/*#__PURE__*/e(\"p\",{children:\"Ready to get started? Follow this step-by-step guide and you'll be scraping Airbnb listings in no time.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Step 1: Choose your scraping tool. As mentioned, \",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Magical\"})}),\" is an excellent option, especially if you're new to scraping.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Step 2: Identify the data you want to scrape. This will typically include information like listing prices, reviews, locations, and host details.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Step 3: Set up your scraping tool. This process will vary depending on the tool you're using, but generally, you'll need to input the URL of the Airbnb page you want to scrape, and specify the data you're interested in.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Step 4: Run your scraper. This is where the magic happens. Your tool will automatically extract the desired data from the Airbnb listings.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Step 5: Analyze your data. Use your chosen data analysis software to make sense of the information you've gathered. Look for trends, patterns, and insights that can inform your business strategy.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Step 6: Apply your findings. Use the insights from your data analysis to optimize your Airbnb listing and boost your sales.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Just like that, you've successfully scraped Airbnb listings! Remember, practice makes perfect. The more you scrape, the more comfortable you'll become with the process, and the more valuable data you'll be able to extract.\"}),/*#__PURE__*/e(\"p\",{children:\"Scraping can seem daunting, but with the right tools and guidance, it's an extremely effective way to gain a competitive edge in the Airbnb market. Happy scraping!\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Legal Aspects of Airbnb Listing Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"Before diving right into the world of data extraction, it's crucial to understand the legalities and ethical considerations surrounding Airbnb listing scraping.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding the Airbnb API Policies\"})}),/*#__PURE__*/e(\"p\",{children:\"Airbnb, like any other online platform, has its terms of service that you need to respect. Their API policies outline the dos and don'ts when interacting with their platform. Just as you'd respect the rules of the road when driving, it's vital to adhere to these guidelines when embarking on your data scraping journey.\"}),/*#__PURE__*/e(\"p\",{children:\"One key aspect to note is that Airbnb does not permit data scraping activities without explicit authorization. This can be found in their terms of service. In essence, if you're planning on scraping Airbnb listings, you need to seek Airbnb's permission first.\"}),/*#__PURE__*/e(\"p\",{children:\"Failure to comply can lead to consequences such as being blacklisted from the platform, which can significantly hamper your data gathering efforts. So, make sure you're fully aware of these rules before you start.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ethical Considerations\"})}),/*#__PURE__*/t(\"p\",{children:[\"Beyond the legal dimension, there's also the ethical aspect of data scraping to consider. Just because you \",/*#__PURE__*/e(\"em\",{children:\"can\"}),\" do something doesn't necessarily mean you \",/*#__PURE__*/e(\"em\",{children:\"should\"}),\". It's important to ensure that your data scraping activities are carried out responsibly and ethically.\"]}),/*#__PURE__*/e(\"p\",{children:\"Firstly, you should only use the scraped data for legitimate purposes. Using the data to gain an unfair competitive advantage or for malicious activities is a no-go. Always remember that with great power comes great responsibility.\"}),/*#__PURE__*/e(\"p\",{children:\"Secondly, respect privacy. Ensure that no sensitive information is being collected or shared when you're scraping Airbnb listings. Whilst public listing details are fair game, infringing on personal privacy is a definite red line.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, be considerate of the platform's resources. Overloading Airbnb's servers with incessant data requests can lead to disruptions in their service, which is neither fair nor ethical.\"}),/*#__PURE__*/t(\"p\",{children:[\"Remember, understanding the \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airbnb Scraper\"})}),\" process isn't just about \",/*#__PURE__*/e(\"em\",{children:\"how to scrape Airbnb data\"}),\" but also understanding the legal and ethical dimensions that come with it. By keeping these points in mind, you can ensure that your scraping activities are both productive and respectful.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Case Studies: Success Stories of Using Airbnb Data Scraping\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Case Study 1\"})}),/*#__PURE__*/e(\"p\",{children:\"Our first tale of triumph involves HostMeRight, a budding property management company. A few months ago, they had a modest portfolio of properties but were struggling to achieve the desired occupancy rates. They decided to leverage the power of Airbnb listing scraping to gain a competitive edge.\"}),/*#__PURE__*/t(\"p\",{children:[\"Using an \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airbnb scraper\"})}),\", they began to gather data on properties similar to their own in the same localities. They analyzed the data to understand the key factors contributing to the high occupancy of top-performing listings. This included studying the pricing strategy, amenities offered, and the tone of their descriptions.\"]}),/*#__PURE__*/e(\"p\",{children:\"By applying these insights, HostMeRight significantly improved their listings. In a matter of weeks, they observed a 30% boost in their bookings. The power of data scraping was clearly manifested in their success story.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Case Study 2\"})}),/*#__PURE__*/e(\"p\",{children:\"Our next success story revolves around StayAhead Rentals, a company specializing in high-end vacation rentals. StayAhead Rentals was doing well, but they were always on the lookout for strategies to outdo their competition and stay ahead (pun intended).\"}),/*#__PURE__*/t(\"p\",{children:[\"They decided to employ \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-scrape-airbnb-data\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"how to scrape Airbnb data\"})}),\" to identify emerging market trends. They focused on properties in their niche, scraping data to uncover the most in-demand amenities, interior design trends, and guest preferences.\"]}),/*#__PURE__*/e(\"p\",{children:\"Armed with this data, StayAhead Rentals initiated a series of improvements in their properties, adding popular amenities and updating their interiors to reflect current trends. The results were astounding. Their occupancy rate improved by 40%, and their guest reviews reached new heights.\"}),/*#__PURE__*/e(\"p\",{children:\"These case studies underscore the immense potential of Airbnb data scraping for boosting your sales and staying competitive. As seen with HostMeRight and StayAhead Rentals, the data extracted can offer valuable insights, helping you make data-driven decisions that can significantly improve your business performance. It's all about understanding your market, learning from the best, and being open to adapt and improve.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Conclusion\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Key Takeaways\"})}),/*#__PURE__*/e(\"p\",{children:\"After immersing ourselves in the world of Airbnb listing scraping, it's clear that this innovative approach holds significant potential for businesses looking to gain an edge in the increasingly competitive landscape of the short-term rental market.\"}),/*#__PURE__*/e(\"p\",{children:\"Here's what we've learned:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Airbnb listing scraping is a powerful tool that allows you to extract valuable insights from the vast sea of data available on Airbnb's platform.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The practice of scraping Airbnb listings can give you an unparalleled understanding of your competition, allowing you to create more informed and strategic pricing strategies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Through the examination of top-performing listings, you can gain inspiration and insights to improve your own listings and enhance your performance.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identifying market trends through scraped data can help you forecast changes and adapt accordingly, keeping you ahead of the curve.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Lastly, leveraging the right tools and understanding the legal aspects involved is crucial for effective and ethical Airbnb data scraping.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tips for Effective Use of Airbnb Scraping Data\"})}),/*#__PURE__*/e(\"p\",{children:\"As we wrap up, let's go over some practical tips for making the most out of your Airbnb scraping data:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Analyze the Data Thoroughly: Don't just collect data - sift through it to unearth hidden insights. Pay close attention to the details that are often overlooked. This might be the key to outperforming your competitors.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Stay Updated: The short-term rental market is dynamic. Regularly update your scraped data to keep your strategies relevant.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Leverage the Right Tools: Tools like the \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/airbnb-scraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airbnb scraper\"})}),\" can simplify the data extraction process, saving you time and energy.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Respect Privacy: While scraping is a powerful tool, it's important to respect the privacy of the users. Always adhere to the ethical considerations and Airbnb's API policies to maintain a good reputation.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Just like how you can scrape data from Airbnb, similar practices can be applied to other platforms as well. Check out our guides on \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-scrape-twitter\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"how to scrape Twitter\"})}),\" or \",/*#__PURE__*/e(i,{href:\"https://getmagical.com/blog/how-to-export-instagram-comments-and-profile-data-to-google-sheets\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"how to export Instagram comments and profile data to Google Sheets\"})}),\" to expand your data extraction capabilities.\"]}),/*#__PURE__*/e(\"p\",{children:\"With these takeaways and tips, you're now better equipped to navigate through the data-driven world of short-term rentals. So, take the plunge and start leveraging the power of Airbnb listing scraping to boost your sales today!\"})]});export const richText1=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you're reading this, then you probably wanted to scrape Airtable but didn't know how. If so, learning how to \",/*#__PURE__*/e(\"strong\",{children:\"scrape airtable\"}),\" could be a game-changer for your workflow. Over 200,000 companies use Airtable for their data management needs and Airtable has over 2 million active users monthly. Within it could be a treasure trove of data you may need.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"But how do you get that data, and what do you do with it from there?\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In this article we'll show you how to scrape Airtable in a few steps. We'll also show you how to choose the right method for scraping Airtable and how to be ethical and compliant when using scraping tools like these.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why Scrape Airtable?\"})}),/*#__PURE__*/t(\"p\",{children:[\"Scraping\",/*#__PURE__*/e(i,{href:\"https://www.airtable.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Airtable\"})}),\" data involves programmatically extracting information from Airtable bases (databases). Airtable is a cloud platform that combines features of database and spreadsheet applications, making it a versatile tool for organizing, sharing, and managing data in various formats. People want to scrape Airtable data for a number of reasons including (but not limited to):\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Data Integration\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"To integrate Airtable data with other systems, applications, or databases. Scraping can be a method to periodically extract data for synchronization purposes.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Backup\"})}),/*#__PURE__*/e(\"p\",{children:\"Creating backups of Airtable data outside the platform for archival or security purposes.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Analysis and Reporting\"})}),/*#__PURE__*/e(\"p\",{children:\"Extracting data for advanced analysis or reporting that requires tools or functionalities not available in Airtable.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Automation\"})}),/*#__PURE__*/e(\"p\",{children:\"Automating the process of gathering data from multiple Airtable bases for centralized processing or monitoring.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Migration\"})}),/*#__PURE__*/t(\"p\",{children:[\"When migrating from\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/airtable-tips-tricks-shortcuts\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Airtable\"})}),\" to another database or platform, scraping can facilitate the transfer of data, especially if the standard export tools do not meet specific needs.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What Are Some Use Cases for Scraping Airtable Data?\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Business Intelligence\"}),\": Companies might scrape data from Airtable to feed into their business intelligence tools, allowing for comprehensive analysis that combines data from various sources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Research\"}),\": Researchers might scrape data from public or shared Airtable bases to gather datasets for academic or market research.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Competitive\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"Analysis\"}),\": Businesses could scrape public Airtable bases of competitors to analyze pricing, product listings, or other relevant data for competitive analysis.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Content\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"Aggregation\"}),\": Developers might scrape Airtable bases to aggregate\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/free-content-writing-tools\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" content for websites,\"})}),\" apps, or platforms, especially when curating data from multiple sources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Custom\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"Dashboards\"}),\": Creating custom dashboards that display data from Airtable along with other sources, requiring regular scraping to keep the dashboard updated.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Workflow\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"Automation\"}),\": In cases where businesses use multiple cloud platforms, scraping Airtable data might be part of a larger automation script that integrates data across these platforms to streamline operations.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Keep in Mind Ethical and Legal Considerations When Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"While scraping can be powerful for data extraction and automation, it's important to consider ethical and legal aspects. Always ensure compliance with Airtable's terms of service, respect privacy laws (like GDPR in Europe), and seek permission when scraping private or sensitive data.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Some use cases might be better served through Airtable's API, which provides a more structured and policy-compliant method to access data programmatically.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Scraping publicly available information on the web in an automated way is legal as long as the scraped data is not:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Used for any harmful purpose.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Used to directly harm the scraped website\u2019s business or operations.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Including Personally identifiable information (PII). There are \",/*#__PURE__*/e(i,{href:\"https://research.aimultiple.com/data-privacy-law/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"data protection regulations\"})}),\" around PII in many countries, the major ones being \",/*#__PURE__*/e(i,{href:\"https://gdpr.eu/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"GDPR \"})}),\"in EU and \",/*#__PURE__*/e(i,{href:\"https://oag.ca.gov/privacy/ccpa\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"CCPA \"})}),\"in California. There are no federal regulations about that in the US yet, but combination of different laws and state-level regulations often protect PII at federal level. Therefore, it is important not to scrape personally identifiable information or even if scraped, businesses can \",/*#__PURE__*/e(i,{href:\"https://research.aimultiple.com/data-masking/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"mask\"})}),\" and protect it with data enhancing technologies.\"]})})]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"-Cem Dilmegani\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"Be mindful of how you scrape and what data you scrape.\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Everyone is generating data, and some of it is personal information, such as contact details. Tread carefully when it comes to this kind of data. Even if the information is publicly available, that doesn't mean you should extract or keep such data if you don't have a legitimate reason to do so. Treat other people's data as you would have them treat yours.\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"-Theo Vasilis, Tech Expert\\xa0\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Methods for Scraping Airtable Data\"})}),/*#__PURE__*/e(\"p\",{children:\"Scraping Airtable data can be approached in several ways, ranging from manual methods to automated scripts. The choice of method depends on the complexity of the task, the volume of data, and the specific requirements of the project. Here's some common methods for scraping Airtable data:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Airtable API\"})}),/*#__PURE__*/t(\"p\",{children:[\"Using the Airtable API is the most straightforward and reliable method for extracting data programmatically. It allows you to query your database, retrieve records, and even update or delete them, all in a controlled manner that respects the platform's rules and limitations. You can use their web clipper to easily\",/*#__PURE__*/e(i,{href:\"https://support.airtable.com/docs/using-the-web-clipper-browser-extension\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" grab details from Airtable\"})}),\".\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pros\"}),\": Efficient, reliable, and respects rate limits. Provides direct access to data in a structured format.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cons\"}),\": Requires some programming knowledge and understanding of API usage.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Custom Scripts\"})}),/*#__PURE__*/e(\"p\",{children:\"Custom scripts can be written in various programming languages (like Python, JavaScript, or Ruby) to scrape data from Airtable. These scripts might directly use the Airtable API or mimic manual data retrieval processes.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Tools/Libraries\"}),\": For Python, libraries such as `requests` (for API calls) or `beautifulsoup4` (for parsing HTML if you're scraping from a web interface, though this is less common with Airtable) can be useful.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pros\"}),\": Highly customizable and can be tailored to specific needs.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cons\"}),\": Requires programming skills and maintenance over time as APIs or data structures change.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. No-code Automation Tools\"})}),/*#__PURE__*/e(\"p\",{children:'No-code platforms like Zapier, Integromat (now rebranded as Make), and Automate.io can connect Airtable with other apps and services. These tools can be used to \"scrape\" data by triggering actions based on updates in Airtable and moving data between platforms.'}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pros\"}),\": User-friendly and doesn't require programming knowledge. Suitable for integrating Airtable data with other applications.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cons\"}),\": May have limitations based on the platform's capabilities and usually requires a subscription for extensive use.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Web Scraping Tools\"})}),/*#__PURE__*/e(\"p\",{children:\"Although not directly scraping from Airtable, if your Airtable data is displayed on a website or a web application, web scraping tools and browser extensions can be used to extract this displayed information.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Examples\"}),\": Tools like Octoparse, ParseHub, or\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/best-octoparse-alternatives\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" alternative scraping browser extensions\"})}),\" like Web Scraper or Data Miner.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pros\"}),\": Good for non-programmers and extracting data from web pages quickly.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cons\"}),\": Limited to what is displayed on the web pages and can be less reliable than API calls.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"5. Manual Export\"})}),/*#__PURE__*/e(\"p\",{children:\"For smaller datasets or one-time needs, data can be manually exported from Airtable into CSV files and then processed or analyzed as needed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pros\"}),\": Simple and doesn't require any programming or third-party tools.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cons\"}),\": Not scalable or practical for large datasets or recurring needs.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How To Scrape Airtable (Step by Step)\"})}),/*#__PURE__*/e(\"p\",{children:\"Scraping Airtable data using the Airtable API is a reliable and efficient method. Here's a step-by-step guide focusing on using Python, one of the most popular programming languages for such tasks, to extract data from an Airtable base. This approach ensures you're working within Airtable's guidelines and using a structured and legal method to access your data.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Prerequisites:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Basic knowledge of Python.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An Airtable account and a base from which you want to scrape data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An API key from Airtable.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 1: Obtain API Key and Base ID\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"API Key\"}),\": Log into your Airtable account, go to your account settings, and find your API key.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Base ID\"}),\": Go to the [Airtable API page](\",/*#__PURE__*/e(i,{href:\"https://airtable.com/api\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"https://airtable.com/api\"})}),\"), select the base you want to work with, and the URL will contain your Base ID (the part that follows `https://api.airtable.com/v0/`).\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 2: Install Required Python Library\"})}),/*#__PURE__*/e(\"p\",{children:\"We'll use the `requests` library in Python to make API calls. If you don't have it installed, open your terminal or command prompt and run:\"}),/*#__PURE__*/e(\"p\",{children:\"```sh\"}),/*#__PURE__*/e(\"p\",{children:\"pip install requests```\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 3: Set Up Your Python Script\"})}),/*#__PURE__*/e(\"p\",{children:\"Open your preferred text editor or IDE, and start a new Python script.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 4: Import Libraries\"})}),/*#__PURE__*/e(\"p\",{children:\"At the beginning of your script, import the necessary libraries:\"}),/*#__PURE__*/e(\"p\",{children:\"```python\"}),/*#__PURE__*/e(\"p\",{children:\"import requests\"}),/*#__PURE__*/e(\"p\",{children:\"import json```\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 5: Define Your API Key and Base ID\"})}),/*#__PURE__*/e(\"p\",{children:\"Replace `'your_api_key'` and `'your_base_id'` with your actual API Key and Base ID.\"}),/*#__PURE__*/e(\"p\",{children:\"```python\"}),/*#__PURE__*/e(\"p\",{children:\"api_key = 'your_api_key'\"}),/*#__PURE__*/e(\"p\",{children:\"base_id = 'your_base_id'\"}),/*#__PURE__*/e(\"p\",{children:\"table_name = 'your_table_name'\\xa0 # Replace with your table name```\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 6: Make an API Request\"})}),/*#__PURE__*/e(\"p\",{children:\"Construct a function to make a GET request to the Airtable API to retrieve data from your table.\"}),/*#__PURE__*/e(\"p\",{children:\"```python\"}),/*#__PURE__*/e(\"p\",{children:\"def get_airtable_data(api_key, base_id, table_name):\"}),/*#__PURE__*/t(\"p\",{children:['\\xa0\\xa0\\xa0\\xa0url = f\"',/*#__PURE__*/e(i,{href:\"https://api.airtable.com/v0\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"https://api.airtable.com/v0/\"})}),'{base_id}/{table_name}\"']}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0headers = {\"}),/*#__PURE__*/e(\"p\",{children:'\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\"Authorization\": f\"Bearer {api_key}\"'}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0}\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0response = requests.get(url, headers=headers)\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0if response.status_code == 200:\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0return response.json()\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0else:\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0return None```\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 7: Process the Data\"})}),/*#__PURE__*/e(\"p\",{children:\"Add code to call your function and process the returned data. For simplicity, this example just prints the data to the console.\"}),/*#__PURE__*/e(\"p\",{children:\"```python\"}),/*#__PURE__*/e(\"p\",{children:\"data = get_airtable_data(api_key, base_id, table_name)\"}),/*#__PURE__*/e(\"p\",{children:\"if data:\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0records = data['records']\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0for record in records:\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0\\xa0print(record)\"}),/*#__PURE__*/e(\"p\",{children:\"else:\"}),/*#__PURE__*/e(\"p\",{children:'\\xa0\\xa0\\xa0\\xa0print(\"Failed to retrieve data\")```'}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 8: Run Your Script\"})}),/*#__PURE__*/e(\"p\",{children:\"Save your script and run it in your terminal or command prompt:\"}),/*#__PURE__*/e(\"p\",{children:\"```sh\"}),/*#__PURE__*/e(\"p\",{children:\"python your_script_name.py```\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Bonus Tips:\\xa0\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pagination\"}),\": The Airtable API may paginate the results if your table has a lot of records. Check the API documentation on how to handle pagination in your requests.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Rate Limits\"}),\": Be aware of the API's rate limits to avoid getting temporarily blocked. The Airtable API documentation specifies these limits.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Error Handling\"}),\": Implement error handling in your script to manage issues like rate limits exceeded, network errors, or incorrect API keys gracefully.\"]}),/*#__PURE__*/e(\"p\",{children:\"This guide provides a basic framework for scraping data from Airtable using its API and Python. Depending on your specific needs, you might need to customize the script further, such as handling pagination or filtering records based on specific criteria.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Best Practices and Considerations\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"API First\"}),\": Whenever possible, use the Airtable API for scraping data, as it's the most efficient and respects the platform's usage policies.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Rate Limiting\"}),\": Be mindful of rate limits when making API calls to avoid being temporarily blocked from accessing the data.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Data Privacy\"}),\": Ensure that you have the right to access and scrape the data, respecting any relevant laws and regulations.\"]}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right method depends on the specific needs of your project, the volume of data, and the technical skills available. For most applications, leveraging the Airtable API or no-code automation tools offers a good balance between ease of use and functionality.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"A Final Word\"})}),/*#__PURE__*/e(\"p\",{children:\"When you have data to scrape off of Airtable, it's important to be clear about your reasons, your methods, and the tools you use. Scraping data from Airtable, particularly through its API, offers a powerful way to access, integrate, and leverage your valuable data across various platforms and applications.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"And if you're looking for a tool to transfer that data into your spreadsheet or whatever storage methods you use, you will want to download the\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" free Magical Chrome extension\"})}),\". Magical can easily transfer your scraped info from Airtable to any place you choose easily.\"]})]});export const richText2=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"There's so much information on the web. I know, what a surprise, right? But seriously, there's so much available out there to learn and incorporate out there - all those juicy tidbits on competitor websites, countless data points on real estate listings or social media trends. And yet it seemed nearly impossible to gather it all efficiently. Until I learned how to scrape and extract data from any website.\"}),/*#__PURE__*/e(\"p\",{children:\"No more manually copying info into spreadsheets for me. With web scraping tools, that voluminous sea of online information became an easily navigable river. And you can do this too. Data extraction tools have seen a 300% increase in adoption over the past five years, and with a wealth of them to choose from, you could make better, data-driven decisions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In this post, we'll break down complex concepts into bite-sized pieces, explore AI tools for streamlined data extraction, and even guide you through creating your own web scraper.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding Web Scraping and Data Extraction\"})}),/*#__PURE__*/t(\"p\",{children:[\"Web scraping, a form of data extraction, is the modern-day magic spell for harvesting valuable information from web pages. It's an automated method that uses software called\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/scrape-extract-data-website-excel\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" web scrapers\"})}),\", sort of like magical creatures who do your bidding.\",/*#__PURE__*/e(i,{href:\"https://www.finnegan.com/en/insights/articles/the-computer-fraud-and-abuse-act-and-third-party-web-scrapers.html\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Over 50% of businesses use web scraping for content and data aggregation, which pulls out all the frustrating manual copy and paste and speeds it up significantly.\\xa0\"})})]}),/*#__PURE__*/e(\"p\",{children:\"This process plays a vital role in today's digital world where strategy building, decision-making, digital marketing all hinge on data-driven insights.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Does Web Scraping Work?\"})}),/*#__PURE__*/e(\"p\",{children:\"Just like wizards use wands to channel their magic spells, we use web scrapers as our tools. They visit websites and extract data based on specified criteria - it could be text content from articles (like this one), user details from social media profiles or product info from e-commerce sites. The scraped data is then stored for analysis or further usage.\"}),/*#__PURE__*/e(\"p\",{children:\"A web scraper is simply a computer program that reads the HTML code from webpages, and analyze it. With such a program, or \u201Cbot,\u201D it\u2019s possible to extract data and information from websites.\"}),/*#__PURE__*/e(\"p\",{children:\"-Nael Shiab\"}),/*#__PURE__*/e(\"p\",{children:\"Web scraping tools identify information data points, like a person's name, company, or a number. That information can then be collected and ported somewhere else, like a spreadsheet. With the time saved scraping data using tools, you have more opportunity to analyze trends in your dataset.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why You Need Data Extraction\"})}),/*#__PURE__*/e(\"p\",{children:\"Understanding trends and competitors' strategies can provide an advantage in strategic decision-making, which has been proven in a variety of domains, including business intelligence and competitive analysis.\"}),/*#__PURE__*/e(\"p\",{children:\"Data science and analytics rely heavily on large volume datasets which can be collected effectively through web scraping, making it indispensable for various fields ranging from academia to commerce. In essence, think of these processes as incantations cast by businesses around the globe to gather insights right at their fingertips.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Use Cases for Web Scraping (3 Examples)\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"225\",src:\"https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif\",srcSet:\"https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif?scale-down-to=512 512w,https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif 800w\",style:{aspectRatio:\"800 / 450\"},width:\"400\"}),/*#__PURE__*/e(\"p\",{children:\"Web scraping offers a wealth of opportunities across various sectors. Let's take a look at some specific use cases that highlight the versatility and power of this technique.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Real Estate Data Collection\"})}),/*#__PURE__*/e(\"p\",{children:\"In real estate, web scrapers are used to collect property listings from multiple sources. Web scrapers can be used to track online prices in the present moment, allowing investors to make decisions based on existing market conditions.\"}),/*#__PURE__*/e(\"p\",{children:\"This method is not just confined to price monitoring; it extends further. For example, data about finance/hedge funds can be scraped to predict housing market patterns or evaluate potential investment risks. Similarly, businesses employ these tools for competitor analysis by collecting data related to their products' online pricing and customer reviews.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Lead Generation and Business Intelligence\"})}),/*#__PURE__*/t(\"p\",{children:[\"Data extracted through web scraping also aids in lead generation activities. Companies utilize this data to gain a better understanding of consumer inclinations and adjust their advertising plans as necessary.\",/*#__PURE__*/e(i,{href:\"https://scrape-it.cloud/blog/web-scraping-for-lead-generation\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Web scraping is used by 34% of businesses for lead generation.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Apart from its role in strategic decision-making processes like business intelligence, it also plays an integral part in news aggregation services which gather articles from different publications into one place for easy access.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can also learn more about your competition by using web scraping.\",/*#__PURE__*/e(i,{href:\"https://www.linkedin.com/advice/0/how-can-you-monitor-competitor-prices-products-web-9scje\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" About 22% of businesses use web scraping to monitor competitors' prices for example.\\xa0\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Social Media Monitoring\"})}),/*#__PURE__*/e(\"p\",{children:\"Websites like Facebook or X contain vast amounts of user-generated content that could provide invaluable insights when analyzed properly - making them perfect candidates for web scraping efforts.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Note\"}),\": Remember to always respect website terms before starting any kind of extraction work.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to Scrape Any Website Using Magical\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Install Magical\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"260\",src:\"https://framerusercontent.com/images/ervPvvmqXyQh2JEWWlxOUFCR3qI.png\",srcSet:\"https://framerusercontent.com/images/ervPvvmqXyQh2JEWWlxOUFCR3qI.png?scale-down-to=512 512w,https://framerusercontent.com/images/ervPvvmqXyQh2JEWWlxOUFCR3qI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ervPvvmqXyQh2JEWWlxOUFCR3qI.png 1600w\",style:{aspectRatio:\"1600 / 520\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/t(\"p\",{children:[\"This part is easy. Just go to the\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Chrome Web Store\"})}),\" and add the Magical extension to your browser. It's free!\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Open Your Airbnb Listings\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"402\",src:\"https://framerusercontent.com/images/OB1J6X1B3sza6YMHfdZcAJWewo.png\",srcSet:\"https://framerusercontent.com/images/OB1J6X1B3sza6YMHfdZcAJWewo.png?scale-down-to=512 512w,https://framerusercontent.com/images/OB1J6X1B3sza6YMHfdZcAJWewo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/OB1J6X1B3sza6YMHfdZcAJWewo.png 1600w\",style:{aspectRatio:\"1600 / 805\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"p\",{children:\"Visit whichever website you're looking to scrape and start opening the tabs with the pages you want to pull information from.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Label the information you want to scrape\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"444\",src:\"https://framerusercontent.com/images/SkpS2yIpLUD3Ft5foJ6ZkUZbI.png\",srcSet:\"https://framerusercontent.com/images/SkpS2yIpLUD3Ft5foJ6ZkUZbI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SkpS2yIpLUD3Ft5foJ6ZkUZbI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/SkpS2yIpLUD3Ft5foJ6ZkUZbI.png 1600w\",style:{aspectRatio:\"1600 / 888\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"p\",{children:'Click the Magical button to open the side panel. Then navigate over to the \"Transfers\" tab and click the \"Add More\" button at the bottom. This lets you label pieces of information on the web page. Don\\'t worry--you only need to do this once! When you\\'re done, hit \"save.\"'}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Click to transfer\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"212\",src:\"https://framerusercontent.com/images/Lf28yzpexuchjYFsfiGEeZmeH9g.png\",srcSet:\"https://framerusercontent.com/images/Lf28yzpexuchjYFsfiGEeZmeH9g.png?scale-down-to=512 512w,https://framerusercontent.com/images/Lf28yzpexuchjYFsfiGEeZmeH9g.png 956w\",style:{aspectRatio:\"956 / 424\"},width:\"478\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"p\",{children:'Simply click the \"Transfer\" button at the bottom and select where you want the information to go. (A new Google spreadsheet is always a best bet)\\xa0'}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"5. Watch the magic happen\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"296\",src:\"https://framerusercontent.com/images/80Gtja8yK0pDLPJddqxr0EQBx2E.png\",srcSet:\"https://framerusercontent.com/images/80Gtja8yK0pDLPJddqxr0EQBx2E.png?scale-down-to=512 512w,https://framerusercontent.com/images/80Gtja8yK0pDLPJddqxr0EQBx2E.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/80Gtja8yK0pDLPJddqxr0EQBx2E.png 1600w\",style:{aspectRatio:\"1600 / 592\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"p\",{children:\"The app will automatically pull information from your open tabs into this spreadsheet. No muss, no fuss. It's pretty incredible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Scraping info from webpages may appear intimidating, but with the right tools it can be a cinch. Whether you're using a free web scraping tool or an advanced browser extension (like\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Magical\"})}),\"), the goal remains to extract valuable information efficiently.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Batch Processing Tools\"})}),/*#__PURE__*/e(\"p\",{children:\"Batch processing is an effective strategy for dealing with substantial amounts of information without being overwhelmed. A popular choice in this category is Python's web scraping library, which enables easy handling of volume data.\"}),/*#__PURE__*/t(\"p\",{children:[\"Alternatively, if you're seeking user-friendly software that requires minimal coding knowledge, consider using solutions like\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Magical\"})}),\". This tool uses AI technology to automatically recognize and collect required data from various websites.\"]}),/*#__PURE__*/e(\"p\",{children:\"Social media scraping presents its own set of challenges due to dynamically changing content structures. However, many modern scraping tools are designed specifically for these sites\u2014making it easier than ever before to gather alternative data sources for your project.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Note:\"}),\" The categorization of web scrapers isn't limited only to batch processing or open-source types. They also include premium and specialized ones based on different extraction needs and technical expertise levels.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Coding Your Own Web Scraper\"})}),/*#__PURE__*/e(\"p\",{children:\"Python, a general-purpose programming language loved by in-house developers worldwide, can be your magical wand to create an efficient web scraper. You might wonder why code a web scraper when there's so many tools available? Well, coding your own offers more control and customization.\"}),/*#__PURE__*/e(\"p\",{children:\"First, start with installing necessary Python libraries such as BeautifulSoup and Requests. These act like the incantation needed to cast our spell of data extraction.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Building The Web Scraping Pipeline\"})}),/*#__PURE__*/e(\"p\",{children:\"A good wizard plans ahead. So do we while building our scraping pipeline. To begin, you need proxies for anonymizing requests which helps bypass potential blocks on high volume data scraping activities.\"}),/*#__PURE__*/e(\"p\",{children:\"Next is setting up headless browsers using Selenium or similar libraries that allow us to interact with dynamic websites where content dynamically changes based on user actions.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Extraction Rules & Job Scheduling\"})}),/*#__PURE__*/e(\"p\",{children:\"The magic lies in crafting effective extraction rules that guide what information should be extracted from the website's HTML structure. Once set-up correctly these work like charm.\"}),/*#__PURE__*/e(\"p\",{children:\"The next crucial step involves job scheduling i.e., deciding how often you want your code web scraper tool to visit the site and update its scraped data cache.\\xa0 You might set this to run daily or weekly.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Overcoming Challenges in Web Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"Web scraping comes with its own set of challenges such as IP blocking and website structure changes.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Using Proxies for Web Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"One common hurdle when extracting data is encountering a block by the target website's server. This usually happens due to too many requests coming from the same IP address, making you appear like a bot. To get around this issue, you can use proxies which let your scraper rotate between different IPs.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tackling Website Structure Changes\"})}),/*#__PURE__*/e(\"p\",{children:\"Another frequent challenge is dealing with dynamically changing websites that often alter their structures or layouts causing our scraping code to break or retrieve wrong information.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://testsigma.com/automated-api-testing\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Automated API testing tools\"})}),\" come handy here as they ensure consistency and reliability of extracted data even if there are structural changes on the webpage being scraped.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Harnessing the power of AI tools can make\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/data-scraping\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" data extraction\"})}),\" from websites a breeze. It's like having an army of house-elves working tirelessly to gather all the information you need, but without violating any magical laws.\"]}),/*#__PURE__*/e(\"p\",{children:\"One tool that we're partial to (of course) is Magical. The beauty of this tool is that it's simple to use, there's no coding involved, and you can scrape any webpage easily.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:'Just open download Magical to your Chrome browser (it\\'s free), click on the Magical icon on your taskbar, enter the URL of the page you want to extract data from and click \"summarize.\" Simple easy peasy.'}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ethical Considerations in Web Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"Web scraping, although a powerful tool for extracting data from websites, comes with its own set of ethical and legal implications. Respecting the terms of service is one aspect to consider.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding Terms of Service\"})}),/*#__PURE__*/e(\"p\",{children:\"When you decide to scrape data from a website, it's crucial to understand their terms of service. To protect both the website and its users, Terms of Service must be followed when scraping data. It's not just about being respectful; disregarding them could lead you into murky legal waters.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition, remember that not all information on the internet is free for extraction or use without permission. Always ensure consent before using someone else\u2019s content or personal data \u2013 this shows respect towards data privacy.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, engaging in responsible web scraping also means understanding potential harm your activities might cause like overwhelming servers leading to site crashes which can be detrimental especially if the website relies heavily on its online presence.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Legal Implications\"})}),/*#__PURE__*/t(\"p\",{children:[\"Data protection laws vary by country\",/*#__PURE__*/e(\"strong\",{children:\",\"}),\" but they typically revolve around obtaining proper consent before collecting user information. Non-compliance may result in penalties or lawsuits making it vital for scrapers to familiarize themselves with local regulations where they operate as well as where their target sites are based.\"]}),/*#__PURE__*/e(\"p\",{children:\"The landscape surrounding web scraping ethics and legality continues evolving so staying updated helps mitigate risks associated with this activity while allowing beneficial use cases such as competitor analysis among others continue thriving responsibly within boundaries defined by society.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Conclusion\"})}),/*#__PURE__*/e(\"p\",{children:\"Admit it, when you first heard about web scraping, you thought it would be a big deal and too hard to do, right? Well now you know how to scrape and extract data from any website - it's not hard at all. Especially when you choose the right tool - meaning the tool that won't suck to set up and use.\"}),/*#__PURE__*/e(\"p\",{children:\"Magical is great at this. Not only can you use Magical for web scraping effectively, you can also use it to automate your repetitive tasks. Give it a try today and see why the average Magical user saves 7 hours a week.\"})]});export const richText3=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Over 5.64 million home listings are available at any given time across the US. Many of those listings are on\",/*#__PURE__*/e(i,{href:\"https://www.realtor.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Realtor.com\"})}),\" and being competed for by thousands and thousands of real estate agents.\",/*#__PURE__*/e(i,{href:\"https://www.statista.com/statistics/381468/most-popular-real-estate-websites-by-monthly-visits-usa/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Realtor.com receives over 60 million unique visitors each month\"})}),\", which means there's tons of data you could pull from to grow your own business. How can you gain an advantage with this insane level of competition?...learn about how to scrape data from Realtor.com.\"]}),/*#__PURE__*/e(\"p\",{children:\"This article will show you how to find hidden web data and extract precious nuggets from property pages on Realtor.com. Imagine having at your fingertips up-to-the-minute insights about properties in specific areas or tracking price changes using RSS feeds!\"}),/*#__PURE__*/e(\"p\",{children:\"You may wonder if such an adventure comes with challenges \u2013 it does. Ever encountered bot detection walls while trying to scrape data? Or maybe captchas stopping you dead in your tracks?\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why Scrape Realtor.com?\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"593\",src:\"https://framerusercontent.com/images/Lr4757iTsvhWm1ucOgfo9fN0wcc.png\",srcSet:\"https://framerusercontent.com/images/Lr4757iTsvhWm1ucOgfo9fN0wcc.png?scale-down-to=512 512w,https://framerusercontent.com/images/Lr4757iTsvhWm1ucOgfo9fN0wcc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Lr4757iTsvhWm1ucOgfo9fN0wcc.png 1600w\",style:{aspectRatio:\"1600 / 1186\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"\u200B\u200B\"}),/*#__PURE__*/e(\"p\",{children:\"As the largest real estate platform in America, Realtor.com provides a plethora of data for those seeking property-related information. But accessing it is not so simple, which is where web scraping comes into play.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Web scraping can be utilized to access the vast trove of data held by Realtor.com, enabling users to gain a competitive edge through understanding trends and unlocking hidden insights in the real estate market.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Specifically, to scraping realtor.com allows you to unlock powerful insights and understand trends within the real estate market that can provide an edge over competitors. The gathered data not only gives access to basic details like property prices or addresses but also reveals hidden patterns about selling properties which could be vital for your business strategy. Whether you're looking for number of homes sold in an area, average price per square foot, or something else, Realtor.com can give you a sense of what's selling right now.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"If you tried to do this on your own or paid someone else to do it, these are the least effective methods to accomplish your goals.\",/*#__PURE__*/e(i,{href:\"https://www.webharvy.com/articles/scraping-real-estate.html\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Real estate data scraping can save up to 45% of data collection costs\"})}),\", so it's an obvious choice to find a tool that can help you get this done quickly and accurately.\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tapping Into Hidden Insights Through Data Parsing\"})}),/*#__PURE__*/e(\"p\",{children:\"Scraped raw data can sometimes appear messy or unstructured. That's why we employ processes known commonly among developers by terms such 'data parsing' or 'writing code'. By implementing these procedures after extraction, our aim is always making sure that information harvested from platforms like Realtor ends up clear and easy-to-understand.\"}),/*#__PURE__*/e(\"p\",{children:\"From market trends to customer preferences, the data we can scrape from Realtor.com holds immense value. It\u2019s like having a magnifying glass over the real estate landscape and being able to see patterns that were previously invisible.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"2 Methods for Scraping Realtor.com\"})}),/*#__PURE__*/t(\"p\",{children:[\"Scraping data from real estate sites such as Realtor.com can be intimidating, yet Python's straightforward syntax makes it simpler to accomplish. In particular, the libraries\",/*#__PURE__*/e(i,{href:\"https://pypi.org/project/httpx\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" httpx\"})}),\" and\",/*#__PURE__*/e(i,{href:\"https://pypi.org/project/parsel\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" parsel\"})}),\" are powerful tools in any web scraper's arsenal.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Use Python For Web Scraping (coding required)\"})}),/*#__PURE__*/e(\"p\",{children:\"Given its combination of power and ease-of-use, Python is a popular language among developers for web scraping projects. This makes it an excellent choice when you need to scrape realtor or other similar sites. Using Python packages such as httpx allows us to make HTTP requests easier while parsel lets us parse HTML documents effortlessly.\"}),/*#__PURE__*/e(\"p\",{children:\"Httpx provides asynchronous capabilities which means we can handle multiple tasks at once - perfect when dealing with large volumes of property listings on Realtor.com that require quick data extraction. Parsel, on the other hand, enables easy navigation through complex website structures using CSS selectors.\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, if you want to start writing code without worrying about handling sessions or cookies manually, these libraries got your back. Httpx will automatically manage them whereas parsel aids in extracting elements based on their attributes (like 'data-testid') making scraping API responses less cumbersome.\"}),/*#__PURE__*/e(\"p\",{children:\"But remember: web scraping requires respect for target URLs' rules and laws surrounding data privacy, so always ask before taking.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step-by-Step Guide to Scraping Property Data from Realtor.com Using Python\"})}),/*#__PURE__*/e(\"p\",{children:\"Here's a practical guide on how you can start scraping this treasure trove of information.\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Extracting Hidden Web Data\"})}),/*#__PURE__*/e(\"p\",{children:\"The first step is to get the property URLs. You can do this by typing in your desired location into the search bar and then extracting all the resulting property links using CSS selectors. However, note that Realtor.com uses data-testid attributes for bot detection so be careful not to trigger any red flags.\"}),/*#__PURE__*/e(\"p\",{children:\"Next up is parsing these URLs. The goal here is to retrieve hidden web data embedded within each page\u2019s HTML document--think of it as hunting for invisible nuggets of info. This might seem daunting at first but with some Python knowledge under your belt (and perhaps an introductory tutorial on Python web scraping) you'll soon master this task.\"}),/*#__PURE__*/e(\"p\",{children:\"In order to extract useful pieces such as property price or address, make sure you identify correct tags or classes used by the website developer tools will come handy here.\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Avoid Being Blocked\"})}),/*#__PURE__*/e(\"p\",{children:\"Web scraping may sound magical so far but there's one muggle issue we need to tackle: blocking challenges posed by proxy servers. Luckily, rotating proxies provide a reliable fix--they mask your IP address making you appear more like a human than a scraper bot.\"}),/*#__PURE__*/e(\"p\",{children:\"You're now ready for action. Remember, practice makes perfect when learning how to scrape realtor com successfully and always respect the website's terms of use.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Method #2: Use Magical to Scrape (easy method)\"})}),/*#__PURE__*/e(\"p\",{children:\"Visualize the capability to traverse through a plethora of real estate postings on Realtor.com, one of America's most expansive property listing websites, and having the capacity to extract applicable data. This is no wizardry but practical automation at work.\"}),/*#__PURE__*/e(\"p\",{children:\"To begin with, we need to use the search bar effectively. By inputting a city or area name into the search bar on Realtor.com, you can access thousands of properties in that region with ease. It's like casting a wide net over your target location.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Magic Behind Property URLs\"})}),/*#__PURE__*/e(\"p\",{children:\"Every property listed has its unique URL containing valuable data about the property\u2014its price, address, and more. Think of these as hidden keys waiting to be discovered. The challenge here lies not just in extracting this data but also making sure our scraper remains undetected by bot detection systems.\"}),/*#__PURE__*/e(\"p\",{children:\"But worry not; every problem has a solution. To bypass such challenges while scraping realtor.com efficiently requires something akin to an invisibility cloak - proxy rotation.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Navigating Through Proxy Servers\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://en.wikipedia.org/wiki/Proxy_server\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Proxy servers\"})}),\" act as intermediaries between your computer (the client) and Realtor.com (the server). Using multiple proxies allows us change our IP addresses periodically thus giving us that much-needed invisibility from bot detectors when we start scraping.\"]}),/*#__PURE__*/e(\"p\",{children:\"While all this might seem complex initially, remember even learning Wingardium Leviosa wasn't easy at first. But once mastered\u2014it opens up powerful possibilities enabling us to analyze the real estate market better and make informed decisions.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tracking Property Changes on Realtor.com using RSS Feeds\"})}),/*#__PURE__*/e(\"p\",{children:\"If you're a keen observer of the real estate market, then tracking property changes can be a crucial part of your strategy. Luckily, Realtor.com - one of the largest US real estate listing websites - provides RSS feeds to facilitate tracking property changes.\"}),/*#__PURE__*/e(\"p\",{children:\"RSS feeds are like continuous updates for specific categories. You get immediate notifications about price changes, open house events, sold properties, and new listings as they happen - straight to your inbox or feed reader.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding Price Changes with RSS Feeds\"})}),/*#__PURE__*/e(\"p\",{children:\"The Price Change Feed is particularly useful for keeping an eye on fluctuations in property prices. It helps you monitor the ups and downs without having to manually check each listing every day. This can give you an idea of when it might be advantageous to purchase or sell real estate according to pricing movements.\"}),/*#__PURE__*/e(\"p\",{children:\"You can access these feeds by visiting their respective links:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Price Change Feed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Open House Feed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Sold Property Feed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"New Property Feed\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Tracking changes via these RSS feeds will not only save time but also allow more efficient analysis of the ever-changing real estate market landscape. So, if you're serious about keeping up with real estate trends or simply tracking a few properties of interest, these RSS feeds are an essential tool to add to your arsenal.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Overcoming Blocking Challenges When Scraping Realtor.com with ScrapFly API\"})}),/*#__PURE__*/e(\"p\",{children:\"Web scraping is a powerful tool, but it's not without its challenges. One of the most significant obstacles you might encounter when attempting to scrape realtor.com is bypass blocking and bot detection mechanisms. However, there's a reliable solution at hand - using an efficient service like ScrapFly API.\"}),/*#__PURE__*/e(\"p\",{children:\"What makes this so effective? Well, for starters, it employs proxy rotation techniques that make your scraper seem less like a bot and more like multiple genuine users accessing data from different locations.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Magic of Proxy Rotation\"})}),/*#__PURE__*/e(\"p\",{children:\"In layman\u2019s terms, proxies are intermediary servers separating end users from the websites they browse. They can provide varying levels of privacy, security, and functionality based on use case needs.\"}),/*#__PURE__*/e(\"p\",{children:\"When you use proxy rotation in web scraping tasks such as extracting real estate listings or property prices off sites like realtor.com - it essentially means that each request sent to the website comes from a new IP address. This is a good way to ensure you get the maximum amount of data you need without running into limits.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Solving Captchas with ScrapFly API\"})}),/*#__PURE__*/e(\"p\",{children:\"Captcha systems serve as another barrier for scrapers on many websites including realtor.com; their purpose being to differentiate between human users and bots. But don't worry. The same ScrapFly API which helps us handle proxy rotations also has solutions for captchas so you don't have to enter these manually every single time you pull data.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In my personal experience with using these tools while working on various projects related to data extraction from major platforms (including one where I had to scrape property URLs), I've found them exceptionally helpful in overcoming these hurdles.\"}),/*#__PURE__*/e(\"p\",{children:\"So, if you're planning to start scraping realtor.com for your next big data project, consider leveraging the powerful features of ScrapFly API. It can drastically streamline the procedure and render it more productive.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"A Final Word\"})}),/*#__PURE__*/e(\"p\",{children:\"When you learn how to scrape Realtor.com, you will have a considerable advantage over your competitors. Competition in the real estate market is already tough, so any advantage you get is a welcome one.\"}),/*#__PURE__*/t(\"p\",{children:[\"Plus you can use the AI tool Magical to help you store your data and ultimately save time. Just download it for your Chrome browser\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" here\"})}),\" (it's free).\"]})]});export const richText4=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"You're here because you want to master the art of scraping your screen. Maybe you've dabbled a bit, peeking behind user interfaces or trying your hand at data extraction. We'll dive into how this tech is shaking things up in finance by helping budget apps give us those eye-opening financial insights and easy payment options.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Since screen scraping has become so popular, you'll find plenty of easy screen scraping tools that can help you power through the most simple or complex tasks on your to-do list. Consider this your beginner guide to data scraping.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"We'll sort through the toolbox\u2014exploring which scraping tools can make your life easier when it comes to pulling out that precious display information.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is Screen Scraping?\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"Let's say you work in a role where you need to collect a lot of data. This can take hours of your work schedule to do accurately. It can also be extremely tedious. So what if I told you there was a way to get all that information without straining your eyes in front of your computer all day?\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Enter the magic of screen scraping. It's like waving Harry Potter's magic wand to gather up everything you need in a matter of seconds.\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Web scraping usually refers to extracting, parsing and outputting data from HTML code. Webpages typically comprise a combination of HTML, CSS and JavaScript code. A browser makes these elements human-readable. By right-clicking and inspecting a page, a user can see which on-page elements in the browser correspond to which lines of HTML code. This can be helpful in knowing what to scrape.\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"-Ben Lutkevich, Tech Website Editor\\xa0\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why Screen Scraping?\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping has emerged as a critical tool for data extraction from graphical user interfaces, especially in sectors where quick access to up-to-date information is key. By capturing screen display data automatically, this technology offers businesses the agility they need to stay ahead.\"}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right tools can make or break your screen scraping work. There's many web scraping tools designed specifically for different integration scenarios\u2014some prioritize ease-of-use while others focus on handling more complex tasks like dealing with unstructured text data or dynamic content within web browsers.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What Can You Use Screen Scraping For?\"})}),/*#__PURE__*/e(\"p\",{children:\"Initially screen scraping referred to the practice of reading text data from a computer display terminal's screen. Today, it often involves automated software processes that extract data from websites and web applications. Here's some common uses for screen scraping:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Data Aggregation\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping is widely used to collect data from various websites and aggregate it into a single, comprehensive database or application. This is common in sectors like travel (for comparing flight prices), real estate (for aggregating property listings), and finance (for aggregating stock prices or insurance quotes).\"}),/*#__PURE__*/t(\"p\",{children:[\"Over 37% of businesses use web scraping for lead generation and\",/*#__PURE__*/e(i,{href:\"https://stackoverflow.com/questions/48015149/how-does-one-scrape-all-the-products-from-a-random-website\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" around 46% of web scrapers extract data from product pages.\"})}),\"\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Hands down: screen scraping without coding is the fastest way to automate data extraction.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"If you think about it, the use cases are endless!\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Outreach\"})}),/*#__PURE__*/t(\"p\",{children:[\"So you need to \",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/cold-emailing-guide\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"send cold emails\"})}),\", and making up your lead gen list takes the most time? Using a tool like Magical, you can quickly snap up valuable details about someone's name, company, and role. Then you can port it over to a spreadsheet so you can communicate with all your intended prospects.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"See it in action here:\\xa0\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"225\",src:\"https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif\",srcSet:\"https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif?scale-down-to=512 512w,https://framerusercontent.com/images/U2IznlDIII6TrB8XI9SOZUtGw.gif 800w\",style:{aspectRatio:\"800 / 450\"},width:\"400\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Competitive Analysis\"})}),/*#__PURE__*/t(\"p\",{children:[\"Businesses use screen scraping to monitor competitors\u2019 websites, gathering data on pricing, product offerings, and market strategies. This information supports competitive analysis and strategic planning.\",/*#__PURE__*/e(i,{href:\"https://www.blog.datahut.co/post/the-economy-of-the-web-scraping-industry\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Around 38% of web scrapers use it for competitive pricing. \"})}),/*#__PURE__*/e(i,{href:\"https://medium.com/@caroljsalaam22/top-industries-that-can-benefit-from-web-scraping-services-428f837c51ca\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"\\xa0E-commerce (22%) and real estate (17%) are the top industries using web scraping, but there are plenty of others where you could use the data to get a real feel for the industry.\\xa0\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Web Indexing\"})}),/*#__PURE__*/e(\"p\",{children:\"Search engines use sophisticated forms of screen scraping to index the content of web pages across the internet. This process enables the search engines to return relevant web pages in response to user queries. Search engines like Google are running scraping capabilities around the clock to log what's out there for users and to ensure relevant search page results for viewers.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Price Monitoring\"})}),/*#__PURE__*/e(\"p\",{children:\"E-commerce platforms and retailers use screen scraping to monitor prices on competitor websites. This information can be used to adjust pricing strategies dynamically to stay competitive in the market. If you want to keep an eye on how much something costs, screen scraping can pull that data to you and deliver it to you on as as-needed basis.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Market Research\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping facilitates market research by collecting data on consumer behavior, trends, and preferences from various online sources. This data can be analyzed to identify market opportunities and inform product development.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Content Migration\"})}),/*#__PURE__*/e(\"p\",{children:\"When businesses need to migrate content from one website to another, screen scraping can automate the extraction of content (text, images, links) from the old site, speeding up the migration process.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Financial Analysis\"})}),/*#__PURE__*/e(\"p\",{children:\"Analysts use screen scraping to collect financial data from multiple sources, such as stock exchanges, bank websites, and financial news sites, for analysis and decision-making purposes. No one wants to track all that data manually anyways, and thanks to tools that do screen scraping without coding, you don't have to worry about it.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"SEO Monitoring\"})}),/*#__PURE__*/e(\"p\",{children:\"SEO professionals use screen scraping to track website rankings, search engine results page (SERP) positions, and to analyze the SEO strategies of competitors. This gives them a roadmap of how to make changes to their own site.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Social Media Analysis\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping tools are used to gather data from social media platforms for sentiment analysis, trend spotting, and monitoring public reaction to events, products, or services.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Legal and Security Aspects of Screen Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping is a powerful tool, but it walks a fine line in the legal landscape. Especially under PSD2 regulations, where banks are urged to transition to more secure APIs, understanding the legal nuances becomes crucial. These rules serve as a guardrail for companies seeking to use screen scraping technology responsibly.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Staying Compliant with Regulations\"})}),/*#__PURE__*/t(\"p\",{children:[\"To scrape screens legally, you have to navigate through complex legislation like\",/*#__PURE__*/e(i,{href:\"https://www.bbva.com/en/everything-need-know-psd2\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" PSD2\"})}),\". This framework lays out specific security measures that must be adhered to when accessing financial data\u2014a process integral for budgeting apps that rely on screen scrapers work to collect user information from banking interfaces.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The\",/*#__PURE__*/e(i,{href:\"https://www.fca.org.uk\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Financial Conduct Authority (FCA)\"})}),\" provides guidance on transitioning away from legacy systems towards APIs which offer enhanced security features for such sensitive operations. Their policy document outlines these steps clearly and serves as an essential resource for any entity involved in this kind of data extraction.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Safeguarding Data during Extraction\"})}),/*#__PURE__*/e(\"p\",{children:\"Beyond compliance, securing scraped data should be top priority because unauthorized access or breaches can have severe repercussions. Companies need robust protocols ensuring their screen scraping techniques do not compromise customer login details or financial records\u2014keeping both the company's and customers' interests safe.\"}),/*#__PURE__*/e(\"p\",{children:\"This entails implementing encryption methods throughout the scraping process along with rigorous authentication procedures before any visual data can be captured from screens displaying sensitive information.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Difference Between Screen Scraping and Web Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"At the heart of data collection, screen scraping and web scraping serve as two distinct techniques that empower businesses with valuable insights. While they share a common goal, their paths diverge in the way they interact with information sources.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Screen Scraping\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping is akin to taking a digital snapshot of what's on display\u2014a GUI or graphical user interface\u2014and then extracting text data from it. It captures visual data originally designed for human interaction, not machine reading. This technique comes in handy when dealing with legacy systems where access to underlying source code or APIs isn't available. You can automate data extraction with the right screen scraping tool and then format it in the manner you need.\\xa0\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"189\",src:\"https://framerusercontent.com/images/OJEJAtZb1c11JyDiNeB71GI.png\",srcSet:\"https://framerusercontent.com/images/OJEJAtZb1c11JyDiNeB71GI.png?scale-down-to=512 512w,https://framerusercontent.com/images/OJEJAtZb1c11JyDiNeB71GI.png 690w\",style:{aspectRatio:\"690 / 379\"},width:\"345\"}),/*#__PURE__*/e(\"p\",{children:\"From UIPath Forum\"}),/*#__PURE__*/t(\"p\",{children:[\"In practice, financial services have adopted this method extensively. Budget apps leverage screen scrapers to collect product prices and customer banking details securely\u2014transformations spurred by open banking frameworks like those detailed by the\",/*#__PURE__*/e(i,{href:\"https://www.openbanking.org.uk/wp-content/uploads/OB_MediaPDF_FINAL.pdf\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Open Banking Implementation Entity (OBIE\"})}),\"). They help users manage finances better by pulling transactional data right off their bank\u2019s user interface without needing direct access to more structured databases.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Web Scraping\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"Moving away from GUIs, web scraping focuses on HTML content extraction directly through a web browser. Here we're talking about well-structured information ripe for retrieval; think price monitoring or competitor analysis fueled by specific data culled from websites' public-facing elements using various scraping tools.\"}),/*#__PURE__*/e(\"p\",{children:\"This approach has transformed how companies secure actionable intelligence\u2014from capturing market trends down to refining user experience designs based on collected web data via sophisticated robotic process automation (RPA).\"}),/*#__PURE__*/e(\"p\",{children:\"The best thing you can do if you're interested in screen scraping is to pick a tool like Magical that helps you do it. This gives you all the power and data of screen scraping without requiring manual coding. You can simply install the browser extension and hit the ground running.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Need help learning more about screen scraping? We've got you covered. We pulled together the\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/screenscraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" four best screen scraping tools of 2024\"})}),\" for you.\\xa0\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Best Practices: A Screen Scraping Tutorial\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"If you're looking to harness the power of screen scraping, it's crucial to do so responsibly and efficiently. Whether your goal is price monitoring or data migration, understanding how screen scrapers work can save time and reduce errors. But remember, with great power comes great responsibility\u2014especially when handling user interface data.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Role of Screen Scraping in Financial Services\"})}),/*#__PURE__*/e(\"p\",{children:\"Screen scraping plays a pivotal role in financial services by enabling apps to extract data from graphical user interfaces quickly. This technique helps budgeting tools analyze spending patterns or initiate payments without manual input\u2014a game-changer for personal finance management.\"}),/*#__PURE__*/e(\"p\",{children:\"By leveraging this technology, users get real-time insights into their finances thanks to the automatic capture of display information from various sources.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"A Final Word\"})}),/*#__PURE__*/t(\"p\",{children:[\"Ultimately, when you use screen\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/screenscraper\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" scraping\"})}),\" tools you need to be careful and use those tools wisely. Be aware of a website's compliance rules before you use that tool. The last thing you want to do is find yourself caught up in legal trouble.\"]})]});export const richText5=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Over 12 million people use Slack daily and \",/*#__PURE__*/e(i,{href:\"https://slack.com/blog/news/work-is-fueled-by-true-engagement\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Slack users send over 1 billion messages per week\"})}),\". Yikes, that's a LOT of data.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"You're not alone if you are one of the many Slack users feeling a bit lost in the digital shuffle of trying to scrape Slack? Consider this handbook your beacon, illuminating the shadowy depths of gleaning critical information from an array of sources like group discussions and personal chats.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"We'll walk you through the essentials: understanding what scraping entails, navigating legalities, exporting data efficiently, and leveraging advanced techniques for thread management. Plus, we dive into using Slack's API like a pro.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding the Basics of Slack Scraping\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://www.techopedia.com/definition/8181/machine-learning-ml\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Slack\"})}),\" scraping involves deploying bots to harvest information from various Slack discussions. Teams frequently employ this strategy to amass knowledge, preserve discussions, or funnel data into alternative systems. While it sounds complex, with the right set of tools and some know-how about web scraping and API usage, extracting valuable info from your Slack workspace becomes manageable.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Slack/web scraping is used for a variety of purposes, including:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Crawling and indexing websites for search engines.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Collecting data for market research or competitor analysis.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Populating news feeds.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Extracting data to train \",/*#__PURE__*/e(i,{href:\"https://www.techopedia.com/definition/8181/machine-learning-ml\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"machine learning\"})}),\" models.\"]})})]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"-Margaret Rouse, Technology Expert\\xa0\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Tools and Techniques for Effective Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"The landscape of available tools for this task ranges widely, but knowing which ones suit your needs best makes all the difference. Popular options include dedicated web scraping projects that automate data extraction processes efficiently while adhering to legal guidelines.\"}),/*#__PURE__*/e(\"p\",{children:\"To ensure you're on legal ground when performing these operations within your company or project scope, familiarize yourself with security practices highlighted in Slack's official documentation. Moreover, mastering techniques like handling request payloads effectively will significantly enhance your capability to scrape threads without breaching any ethical implications.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Legal Considerations in Scraping Slack Data\"})}),/*#__PURE__*/e(\"p\",{children:\"Navigating the complexities of legally harvesting information from Slack demands a deep grasp of potential legal repercussions. The landscape of digital ethics and security practices plays a significant role here. Before diving into any web scraping project on Slack, make sure you're aware of both ethical and legal boundaries.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding Legal Implications\"})}),/*#__PURE__*/e(\"p\",{children:\"The act of extracting information from Slack channels isn't black and white; it's layered with considerations like user consent, privacy laws, and the platform's terms of service. For instance, accessing public channel data might seem straightforward but still requires a clear understanding of what is permissible under law and by Slack\u2019s own policies.\"}),/*#__PURE__*/t(\"p\",{children:[\"Different countries have varying regulations regarding data privacy (like\",/*#__PURE__*/e(i,{href:\"https://gdpr-info.eu\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" GDPR in Europe\"})}),\"), which significantly impact how you can legally scrape or use that data. So, always ensure compliance with these laws to avoid potential legal challenges.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ethical Implications and Security Practices\"})}),/*#__PURE__*/e(\"p\",{children:\"Beyond legality, ethical considerations also come into play when scraping Slack data. Ask yourself if your actions respect user privacy and contribute positively to your community or enterprise grid organization. Employ robust security practices to protect the integrity of the extracted messages or files - this not only helps in safeguarding sensitive information but also builds trust within your workspace.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Gathering web data is a challenging process in general. Firstly, to gather any web data, you will need to figure out what URLs you want to access. This can be done either by generating URLs (if they follow a certain pattern) or by crawling a site to figure out what URLs are present on it. Once you have the URLs, you may attempt to fetch the content from the web. The content will usually be in HTML format, so the next step is to parse the HTML into a simpler data structure, such as JSON or CSV, containing only the data points of interest. In the case of real-time data, complexity adds up as there is no room for error: the system must be up and running at all times.\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"-Aleksandras \u0160ul\u017Eenko, Product Owner at \",/*#__PURE__*/e(i,{href:\"https://oxylabs.io/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Oxylabs.io\"})})]})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How To Scrape Slack: Step by Step\"})}),/*#__PURE__*/e(\"p\",{children:\"Scraping a Slack channel can unlock valuable insights and data for customer support, sales teams, remote workers, and tech professionals. Whether you're aiming to analyze communication trends or gather specific information shared within your organization's channels, understanding how to effectively scrape Slack is essential. Follow this step-by-step guide to get started.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 1: Choose Your Tool\"})}),/*#__PURE__*/e(\"p\",{children:\"Selecting the right tool is pivotal for efficient slack scraping. While there are numerous options available, two popular choices stand out:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Slack API:\"}),\" Directly provided by Slack, their API offers comprehensive access to channel messages when used properly. It requires some programming knowledge but ensures compliance with Slack\u2019s policies.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"DataMiner:\"}),\" A browser extension that allows users to extract data visible on their screen without needing direct API access or advanced coding skills.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 2: Set Up Your Environment\"})}),/*#__PURE__*/e(\"p\",{children:\"If using the Slack API, you'll need to create an app within your workspace and obtain an OAuth token which grants you permission to fetch messages from specified channels. For tools like DataMiner, setup typically involves installing the extension in your web browser and configuring it according to your needs.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 3: Set Up OAuth Permissions\"})}),/*#__PURE__*/e(\"p\",{children:\"To kick things off, you need two specific scopes: channels:read and channels:history. The essence of these permissions lies in their ability to empower your app to comprehend channel data and retrieve a timeline of conversations within those channels. To set these up, begin by visiting the OAuth guide.\"}),/*#__PURE__*/e(\"p\",{children:\"channels:readchannels:history\"}),/*#__PURE__*/e(\"p\",{children:\"Crafting an application within your Slack environment and tailoring it with the required OAuth parameters is what this step entails. After that, authenticate using the credentials provided during setup. This will give your application programmatic access to retrieve data based on the permissions granted.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 4: Choose the Data You Want To Scrape\"})}),/*#__PURE__*/e(\"p\",{children:\"Familiarize yourself with the types of data available on Slack, such as messages, files, user profiles, channels (public, private, shared, and direct messages), reactions, and mentions. Knowing what data types Slack offers will help you decide what to focus on.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"239\",src:\"https://framerusercontent.com/images/qZbleKQbHSWoLXAKj7k0Gnk8mkA.png\",srcSet:\"https://framerusercontent.com/images/qZbleKQbHSWoLXAKj7k0Gnk8mkA.png?scale-down-to=512 512w,https://framerusercontent.com/images/qZbleKQbHSWoLXAKj7k0Gnk8mkA.png 726w\",style:{aspectRatio:\"726 / 479\"},width:\"363\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 5: Start Scraping\"})}),/*#__PURE__*/e(\"p\",{children:\"Focusing on one channel at a time can help manage scope and complexity especially if new at this process.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"If using \",/*#__PURE__*/e(\"strong\",{children:\"The Slack API:\"}),\" Navigate through its documentation to find relevant endpoints for fetching messages. Utilize Postman or similar software for making requests more manageable.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"If opting for a tool like \",/*#__PURE__*/e(\"strong\",{children:\"DataMiner,\"}),\" navigate to your desired channel in Slack's web interface and execute predefined recipes tailored towards extracting message content.\"]})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"268\",src:\"https://framerusercontent.com/images/O4HblxfV4Y6BwtblmaIg40bZQ4.png\",srcSet:\"https://framerusercontent.com/images/O4HblxfV4Y6BwtblmaIg40bZQ4.png?scale-down-to=512 512w,https://framerusercontent.com/images/O4HblxfV4Y6BwtblmaIg40bZQ4.png 726w\",style:{aspectRatio:\"726 / 537\"},width:\"363\"}),/*#__PURE__*/e(\"p\",{children:\"By following these steps diligently while keeping legal considerations front-and-center, successful scrapes are just around the corner. Remember though, always prioritize respect user privacy, ensure transparency throughout the entire process. Happy scraping!\"}),/*#__PURE__*/e(\"p\",{children:\"The right tools can automate the scraping process, significantly reducing the time and effort required to collect data from Slack. Different tools offer various features, such as filtering, keyword searching, and integration capabilities. Choosing a tool that aligns with your specific needs can enhance the effectiveness of your data collection.\"}),/*#__PURE__*/e(\"p\",{children:\"Some tools are designed to respect Slack's API limits and terms of service. Using these tools can help you avoid breaching terms of service, which could result in losing access to Slack APIs or facing legal action. Three of the best tools for scraping Slack include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"PhantomBuster\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Slack API\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"DataMiner\"})})})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Bottom Line\"})}),/*#__PURE__*/t(\"p\",{children:[\"Whatever your reasons for learning how to scrape Slack, you know it's more than just pulling data. It\u2019s about making sense of the digital chatter for better workspace management. And you can also scrape data from other places, such as\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/best-slack-alternatives\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Slack alternatives \"})}),\"or\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/scrape-zapier\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Zapier\"})}),\".\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Using the right tools and techniques smartly can streamline your scraping projects. Knowing where you stand from a legal standpoint matters too. Make sure you're scraping\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/slack-tips-tricks-shortcuts\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Slack\"})}),\" properly and for the right reasons.\"]}),/*#__PURE__*/e(\"p\",{children:\"If you need data ported over into something simple like a spreadsheet, you can use Magical to keep things organized!\\xa0\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"199\",src:\"https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif\",srcSet:\"https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif?scale-down-to=512 512w,https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif 600w\",style:{aspectRatio:\"600 / 399\"},width:\"300\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"})]});export const richText6=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Have you ever wanted to learn how to scrape Zapier and its vast data treasure trove through effective scraping techniques? You're in the right place. In just a few steps you can scrape Zapier and its extensive database for unique finds.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://zapier.com/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Zapier supports over 2,000 apps for data integration and automation.\"})}),\" Today, it's used\",/*#__PURE__*/e(i,{href:\"https://zapier.com/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" by over 1.8 million individuals and businesses worldwide.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"And here's the real bonus:\",/*#__PURE__*/e(i,{href:\"https://zapier.com/apps/google-sheets/integrations/mailchimp\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Zapier supports data scraping from popular platforms like Google Sheets, Slack, and Mailchimp.\"})}),\" That means you've got access to tons of great data points at your fingertips. If you need to extract data from Zapier, there's a wealth of information to find. But how can you scrape it easily and effectively?\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, you'll learn all about how to scrape Zapier, the best tools for the job, and special considerations for should be mindful of as you scrape.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why Scrape Zapier?\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://www.zapier.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Zapier\"})}),\", a prominent tool in the automation software industry, serves as a bridge connecting thousands of apps to\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/marketing-automation-roi\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" automate\"})}),\" workflows and enhance productivity. However, why would someone consider scraping Zapier? The reasons are manifold and hinge on extracting valuable data that can streamline decision-making processes or provide insights into available integrations and services.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Gathering Integration Data\"})}),/*#__PURE__*/e(\"p\",{children:\"One primary reason for scraping Zapier is to collect detailed information about the various app integrations it offers. By understanding what integrations exist between different applications, businesses can better plan their automation strategies, ensuring they utilize the most efficient tools available for their needs.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This integration data might serve as a backup or framework for other integrations, or simply to document how you're doing things right now. This way, if anything breaks in the future, you can easily rebuild your systems.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Competitive Analysis\"})}),/*#__PURE__*/e(\"p\",{children:\"An additional motive behind scraping this platform involves competitive analysis. Companies might scrape Zapier to see which apps are frequently integrated by competitors or within an industry. This knowledge allows them to stay ahead of trends and possibly discover new tools or integration methods they hadn't considered before.\"}),/*#__PURE__*/e(\"p\",{children:\"To effectively scrape Zapier without violating its terms of service requires using appropriate tools designed with respect for web standards and ethical guidelines in mind. You can use tools like:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. ParseHub\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://www.parsehub.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"ParseHub\"})}),\" is a powerful web scraping tool designed to collect data from websites without the need for coding.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"As G2 reviewer Saransh says:\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"I am loving the PraseHub web scraper. I've had so much success with it, and it's just so easy to use. I'm a freelancer who does a lot of scraping for clients and this makes my life so much easier!\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Octoparse\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(i,{href:\"https://www.octoparse.com\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Octoparse\"})}),\" is a user-friendly web scraping tool that automates data extraction from web pages, making it accessible for both technical and non-technical users. The power of this tool to automate data collection from Zapier makes it a big player in this space.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"According to G2 reviewer Paola:\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"When you do not have much prior programming knowledge and you need to extract data from a website, this software becomes an efficient tool since it is easy to use and is very intuitive; with just a few clicks, you already have a data extraction flow.\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Quick Scraper\\xa0\"})}),/*#__PURE__*/t(\"p\",{children:[\"If you're new to scraping or prefer straightforward solutions,\",/*#__PURE__*/e(i,{href:\"https://zapier.com/apps/quick-scraper/integrations\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Quick Scraper \"})}),\"emerges as an ideal choice. It's very simply to extract data from Zapier with QuickScraper. With its intuitive design, it effortlessly demystifies the process of establishing extraction guidelines and smoothly guides users through the complexities of web parsing methods.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How To Extract Data from Zapier: Step by Step\"})}),/*#__PURE__*/e(\"p\",{children:\"Scraping Zapier can unlock a treasure trove of data that's crucial for customer support, sales teams, and tech workers aiming to enhance productivity through AI and automation software. However, navigating the process requires understanding the best tools to use and acknowledging the legal frameworks surrounding web scraping. Here\u2019s your guide to efficiently scrape Zapier while staying on the right side of ethics and legality.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 1: Review Legal and Ethical Guidelines\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Check Zapier's Terms of Service\"}),\": Look for any clauses that prohibit or restrict web scraping activities.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Respect robots.txt\"}),\": Check Zapier's `robots.txt` file (usually found at `\",/*#__PURE__*/e(i,{href:\"https://www.zapier.com/robots.txt\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"https://www.zapier.com/robots.txt\"})}),\"`) to identify any restrictions on web crawlers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consider Data Privacy Laws\"}),\": Ensure your scraping activities comply with relevant data privacy laws like GDPR or CCPA if you're collecting personal data.\"]})})]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"The discipline of data ethics evaluates such attributes as fairness, privacy, accountability, and transparency in the entire data cycle, from collection and analysis to building individual data-driven systems, such as ML models.\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"The aim is to identify whether certain practices can have negative effects (both apparent and latent) on individuals, society, or the environment. As such, data ethics almost always have wider implications than legal norms surrounding data practices.\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(i,{href:\"https://www.datacenterdynamics.com/en/profile/DenasGrybauskas/\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Denas Grybauskas, Head of Legal at Oxylabs\"})})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 2: Choose Your Scraping Tool\\xa0\"})}),/*#__PURE__*/e(\"p\",{children:\"The first step in scraping Zapier is selecting an appropriate tool or software. While there are many options available, it's essential to choose one that respects Zapier\u2019s robots.txt file, which outlines which parts of their site can be legally scraped. Tools like Beautiful Soup (for Python users) or Puppeteer (for Node.js enthusiasts) are popular choices among developers due to their flexibility and efficiency.\"}),/*#__PURE__*/e(\"p\",{children:\"Look for functionality. This is the most important feature you'll need to match with your scraping needs.\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Think about the functionality of the product you need for your web scraping tools. If it\u2019s being used primarily by developers or the IT team, low-code options are a good fit. But if it\u2019s needed for business users, look for screen scraping software with no-code features like drag-and-drop functionality and screen recorders to make building automation easy.\\xa0\"})}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"-Fortra\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 3: Set Up Your Scraping Project\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Install and Open Your Chosen Tool\"}),\": Follow the installation instructions provided by the tool.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Create a New Project\"}),': Usually, this involves clicking a \"New Project\" button and entering the URL of the Zapier page you wish to scrape.']})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 4: Choose What You Want To Scrape\\xa0\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"359\",src:\"https://framerusercontent.com/images/jBDAVPjWWlixexsb4GPmMKN7uUU.png\",srcSet:\"https://framerusercontent.com/images/jBDAVPjWWlixexsb4GPmMKN7uUU.png?scale-down-to=512 512w,https://framerusercontent.com/images/jBDAVPjWWlixexsb4GPmMKN7uUU.png 751w\",style:{aspectRatio:\"751 / 719\"},width:\"375\"}),/*#__PURE__*/e(\"p\",{children:\"Prioritize what information you're seeking from Zapier. Are you looking for details on specific integrations, pricing models, or user reviews? Clearly defining your objectives will help streamline the scraping process and ensure you\u2019re gathering data that\u2019s relevant and useful for your project.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 5: Execute the Scraping Task\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"350\",src:\"https://framerusercontent.com/images/um4D9R4N0SsoEcIUF62wq8ql8.png\",srcSet:\"https://framerusercontent.com/images/um4D9R4N0SsoEcIUF62wq8ql8.png?scale-down-to=512 512w,https://framerusercontent.com/images/um4D9R4N0SsoEcIUF62wq8ql8.png 741w\",style:{aspectRatio:\"741 / 700\"},width:\"370\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Run the Scraping Task\"}),\": Start the scraping process. This may take some time depending on the amount of data and the number of pages.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Monitor the Process\"}),\": Ensure that the scraping is proceeding as expected, and make adjustments if needed.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 6: Respect Rate Limits And Legal Boundaries\"})}),/*#__PURE__*/e(\"p\",{children:\"Zapier, like any other website, has its terms of service that include clauses about automated access including web scraping. You may want to look into the Zapier API for scraping, for example.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"It's critical not only to respect these guidelines but also adhere to general ethical practices such as maintaining reasonable request rates so as not disrupt service availability for others (\",/*#__PURE__*/e(i,{href:\"https://www.zapier.com/terms\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Zapier Terms of Service\"})}),\"). If unsure whether your activity complies with these terms, consider reaching out directly for clarification.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Step 7: Store And Use Data Responsibly\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"272\",src:\"https://framerusercontent.com/images/rJmgW2dueZxLjzJ6vYUgCz6rv8.png\",srcSet:\"https://framerusercontent.com/images/rJmgW2dueZxLjzJ6vYUgCz6rv8.png?scale-down-to=512 512w,https://framerusercontent.com/images/rJmgW2dueZxLjzJ6vYUgCz6rv8.png 753w\",style:{aspectRatio:\"753 / 545\"},width:\"376\"}),/*#__PURE__*/e(\"p\",{children:\"Once you've collected data from Zapier, make sure it is stored securely and used ethically. This means ensuring personal information is protected under laws such as GDPR if applicable and utilizing this data in ways that do not infringe upon intellectual property rights or privacy expectations.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ethical Considerations When Scraping\"})}),/*#__PURE__*/t(\"p\",{children:[\"Beyond selecting the right tool, it's crucial to approach web scraping ethically. Whether you're scraping Notion, \",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/scrape-airtable\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\"Airtable\"})}),\", Zapier, or something else, keep ethics in the back of your mind with each project. Respecting robots.txt files on websites will guide you on what is permissible to scrape. Moreover, limiting your requests not only ensures you don\u2019t overburden the server but also aligns with fair use practices promoting mutual respect in digital spaces.\"]}),/*#__PURE__*/e(\"p\",{children:\"Essentially, there's valid reasons for wanting to scrape data from Zapier, such as optimizing workflow automations or conducting competitive analysis. However, it's crucial to approach this task with care, selecting the right technologies that allow you to do so ethically and legally without crossing any boundaries.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ready To Get Scraping?\"})}),/*#__PURE__*/e(\"p\",{children:\"Now that you know how to scrape Zapier, make sure you use those skills wisely. Being able to extract valuable data from Zapier can mean everything for your business or your research.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you're looking for a tool to transfer your scraped data to any spreadsheet you want, you should download the\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" free Magical Chrome extension\"})}),\". Magical can move your scraped info from any tab to any place you choose- - like magic. Try it out and find out why the average Magical user saves 7 hours a week.\"]})]});export const richText7=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"You got all the details on the project....well, almost all the deets. There's just a couple of things you need to clear up with something.\\xa0 Don't worry because mastering how to send an email to clear up something is more than just good manners; it's a career superpower.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In this piece, you'll get the scoop on crafting emails that slice through the fog like a hot knife through butter. We're diving into tips for choosing words that won't ruffle feathers and breaking down what goes into making your message crystal clear.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How To You Write the Perfect Clarification Email?\"})}),/*#__PURE__*/t(\"p\",{children:[\"When you need to clear up something over email,\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/best-ai-content-creation-tools\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" choosing your words\"})}),\" wisely can make all the difference. An effective clarification email eliminates confusion and helps everyone stay on the same page. So how do you write one that hits all the right notes? It starts with understanding what goes into a request for clarification in any\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/blog/how-to-be-professional-in-writing-emails\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" professional e-mail\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Subject Line\"})}),/*#__PURE__*/e(\"p\",{children:'Make it specific and clear. Mention that the email is seeking clarification. For example, \"Clarification Needed on Project Deadlines\" or \"Request for Further Information on Meeting Agenda.\"'}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Greeting\"})}),/*#__PURE__*/e(\"p\",{children:\"Start with a polite greeting. Use the recipient's name if possible to make it more personal.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Intro\"})}),/*#__PURE__*/e(\"p\",{children:\"Begin by briefly stating the purpose of your email. If it's related to a previous conversation or email, mention that to provide context.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Points Needing Clarification & Reason\"})}),/*#__PURE__*/e(\"p\",{children:\"Clearly list or describe the specific points or areas where you need more information or clarification. Use bullet points or numbered lists if you have multiple questions. This makes your email easier to read and respond to.\"}),/*#__PURE__*/e(\"p\",{children:\"Explain why you need this clarification. This could be because you want to ensure you're working with the correct information, you've encountered conflicting information, or you need more details to complete a task.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Urgency (If Applicable)\"})}),/*#__PURE__*/e(\"p\",{children:\"If you need the information by a specific date or time, mention this politely. Be reasonable with your expectations and consider the recipient's workload.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Close w/Contact Info\"})}),/*#__PURE__*/e(\"p\",{children:'Thank the recipient in advance for their time and assistance. Close with a polite sign-off, such as \"Best regards\" or \"Sincerely,\" followed by your name. Include your contact information (if it\\'s not already part of your email signature) so they can easily reach you if they need to discuss the matter further.'}),/*#__PURE__*/e(\"p\",{children:\"Leadership expert Tannia Suarez suggests using simple phrasing to ensure your recipient understands your meaning. This includes examples like:\\xa0\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"If I understood you correctly, are you suggesting that we\u2026?\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Referring to our previous discussion\u2026\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Could you clarify your statement on\u2026?\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Apologies for any confusion. My intent was to convey that\u2026\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"In line with the details mentioned in my previous email\u2026\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Kindly confirm my understanding. Did you mean that\u2026?\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Use Magical to Speed up your Email Writing\"})}),/*#__PURE__*/e(\"p\",{children:\"Magical is a free Chrome extension that lets you automate repetitive tasks like writing and responding to your emails. With Magical, you can draft messages with one click and save your favorites as templates that you can call back up at any time. Magical can even instantly personalize your emails with details like the name of the person you're messaging-all in one click!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"199\",src:\"https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif\",srcSet:\"https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif?scale-down-to=512 512w,https://framerusercontent.com/images/uDNgx9ghizJ5tWNassPdn5xXWw.gif 600w\",style:{aspectRatio:\"600 / 399\"},width:\"300\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Importance of Clear Communication in Emails\"})}),/*#__PURE__*/e(\"p\",{children:\"Clear communication in emails is the backbone of professional correspondence. Yet things go missing everyday. Being crystal clear prevents misunderstandings and fosters efficiency, which is crucial for career advancement.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To bridge these communication gaps, it's vital to articulate your thoughts crisply. For example, when you write an email seeking clarification, imagine the clarity you would want if you were reading this email. Every word should serve a purpose towards understanding\u2014think less decoration, more direction.\"}),/*#__PURE__*/e(\"p\",{children:\"This straightforward approach can be applied across various business emails, whether they are following up after job interviews or handling client communications where tactfulness plays a key role. Remember that clear language not only conveys respect but also positions you as someone who values others' time\u2014a trait admired in any industry.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"7 Subject Lines That Get Your Email Noticed\"})}),/*#__PURE__*/e(\"p\",{children:\"Your email's subject line for a clarification email is your first, and sometimes only, chance to make an impression. With inboxes overflowing, a good subject can mean the difference between getting noticed or being overlooked. Remember you're not just competing with other emails; you're vying for attention amidst social notifications, text messages, and endless online distractions.\"}),/*#__PURE__*/e(\"p\",{children:\"Try these subject line examples:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. General Clarification Requests:\"})}),/*#__PURE__*/e(\"p\",{children:'\\xa0\\xa0\\xa0- \"Seeking Clarification on Recent Email Instructions\"'}),/*#__PURE__*/e(\"p\",{children:'\\xa0\\xa0\\xa0- \"Clarification Needed: Meeting Date and Time\"'}),/*#__PURE__*/e(\"p\",{children:'\\xa0\\xa0\\xa0- \"Request for Further Details on Your Last Message\"'}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Project-Specific Inquiries:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0- \",/*#__PURE__*/e(\"em\",{children:'\"Clarification Required on Project XYZ Deliverables\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Question Regarding Milestones for Project ABC\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Details Needed: Submission Guidelines for Project Delta\"'})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Event-Related Clarifications:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0-\",/*#__PURE__*/e(\"em\",{children:' \"Urgent: Clarification on Venue for Tomorrow\\'s Workshop\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Confirming Start Time for the Sales Conference\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Dress Code Clarification for Annual Gala Event\"'})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Policy or Procedure Clarifications:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0- \",/*#__PURE__*/e(\"em\",{children:'\"Seeking Clarity on Updated Work-from-Home Policy\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Clarification Request: New Expense Reimbursement Process\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Inquiry About Recent Changes in Vacation Policy\"'})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"5. Technical or Specific Details:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0- \",/*#__PURE__*/e(\"em\",{children:'\"Clarification on Report Formatting Requirements\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Need More Info on Software Update Procedures\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Question About Email Encryption Guidelines\"'})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"6. Deadline and Submission Clarifications:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0- \",/*#__PURE__*/e(\"em\",{children:'\"Deadline Clarification Needed for Q3 Reports\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Submission Date Confirmation for Grant Proposal\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Urgent: Clarifying Submission Process for Year-End Evaluations\"'})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"7. Follow-up or Reminder for Previous Requests:\"})}),/*#__PURE__*/t(\"p\",{children:[\"\\xa0\\xa0\\xa0- \",/*#__PURE__*/e(\"em\",{children:'\"Following Up: Clarification on Outstanding Invoices\"'})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Reminder: Need Clarification on Budget Allocation Details\"'})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:'\\xa0\\xa0\\xa0- \"Second Request for Clarification on Partnership Terms\"'})}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right subject line will depend on the context of your request and the relationship with the recipient. The key is to make it specific enough that the recipient understands the urgency and the content of your email before even opening it.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Templates For Clarification Emails\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 1: General Clarification\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Clarification Needed on Project Deliverables\"})}),/*#__PURE__*/e(\"p\",{children:\"Dear [Recipient\u2019s Name],\"}),/*#__PURE__*/e(\"p\",{children:\"I'm writing to request further clarification on the deliverables for the [Project Name] due on [Date]. Specifically, I would like to understand the following points more clearly:\"}),/*#__PURE__*/e(\"p\",{children:\"*Detailed specifications for [specific part of the project]\"}),/*#__PURE__*/e(\"p\",{children:\"*Expected format and length for the [report/presentation/etc.]\"}),/*#__PURE__*/e(\"p\",{children:\"*Any particular aspects you want to be emphasized in the [specific section]\"}),/*#__PURE__*/e(\"p\",{children:\"This clarification will help ensure that my work aligns with your expectations and meets the project's requirements. If you need any additional information from my side to address these queries, please let me know.\"}),/*#__PURE__*/e(\"p\",{children:\"Could you please provide this information by [specific date] to ensure timely completion of the project?\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you very much for your time and assistance with these questions. I appreciate your guidance.\"}),/*#__PURE__*/e(\"p\",{children:\"Best regards,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Contact Information]\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 2: Clarification on Project Instructions\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Clarification Needed on Project Titan Instructions\"})}),/*#__PURE__*/e(\"p\",{children:\"Dear Dr. Smith,\"}),/*#__PURE__*/e(\"p\",{children:\"I am currently working on the Project Titan assignment and came across a few points in the instructions that I find a bit unclear. Specifically, I am seeking clarification on the following:\"}),/*#__PURE__*/e(\"p\",{children:\"*The preferred data analysis methods for the project\"}),/*#__PURE__*/e(\"p\",{children:\"*Whether there is a specific format you'd like us to follow for the final report\"}),/*#__PURE__*/e(\"p\",{children:\"*The deadline for submitting the peer review feedback\"}),/*#__PURE__*/e(\"p\",{children:\"Could you please provide further details on these aspects? Understanding these requirements more clearly will enable me to align my work more closely with your expectations.\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you for your guidance and support.\"}),/*#__PURE__*/e(\"p\",{children:\"Best regards,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 3: Clarification on Meeting Details\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Request for Clarification on Next Week's Strategy Meeting\"})}),/*#__PURE__*/e(\"p\",{children:\"Hi Team,\"}),/*#__PURE__*/e(\"p\",{children:\"As we have a strategy meeting scheduled for next week, I noticed that the time and platform (Zoom/Teams) were not specified in the calendar invite. To ensure everyone is prepared and logs in on time, could we clarify:\"}),/*#__PURE__*/e(\"p\",{children:\"*The exact time and date of the meeting\"}),/*#__PURE__*/e(\"p\",{children:\"*Which online platform we will be using\"}),/*#__PURE__*/e(\"p\",{children:\"*If there is any pre-meeting material we should review\"}),/*#__PURE__*/e(\"p\",{children:\"Your prompt response will help us all prepare effectively for the meeting.\"}),/*#__PURE__*/e(\"p\",{children:\"Thanks,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 4: Clarification on Email Communication\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Seeking Clarification on Recent Policy Update Email\"})}),/*#__PURE__*/e(\"p\",{children:\"Dear HR Department,\"}),/*#__PURE__*/e(\"p\",{children:\"I recently received the email regarding the updated remote work policy and have a couple of questions for my clarity and compliance:\"}),/*#__PURE__*/e(\"p\",{children:\"*Is the new policy effective immediately, or is there a grace period for implementation?\"}),/*#__PURE__*/e(\"p\",{children:\"*Can you provide more details on the expectations for availability during working hours?\"}),/*#__PURE__*/e(\"p\",{children:\"I would appreciate any additional information you can provide to ensure I fully understand and adhere to the new guidelines.\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you for your time.\"}),/*#__PURE__*/e(\"p\",{children:\"Kind regards,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 5: Clarification on Invoice Discrepancy\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Clarification Requested on Invoice #4567 Discrepancy\"})}),/*#__PURE__*/e(\"p\",{children:\"Dear [Vendor Name],\"}),/*#__PURE__*/e(\"p\",{children:\"Upon reviewing invoice #4567, I noticed a discrepancy between the quoted price and the billed amount for [Product/Service]. To resolve this matter efficiently, I kindly request the following clarifications:\"}),/*#__PURE__*/e(\"p\",{children:\"*The detailed breakdown of the final billed amount\"}),/*#__PURE__*/e(\"p\",{children:\"*Any additional charges that were not included in the initial quote\"}),/*#__PURE__*/e(\"p\",{children:\"I believe this could be a simple oversight, but I would appreciate your prompt attention to this matter to ensure our records are accurate and up-to-date.\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you for your cooperation.\"}),/*#__PURE__*/e(\"p\",{children:\"Best,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Template 6: Clarification on Job Application Status\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Subject: Follow-Up on Application for Marketing Coordinator Position\"})}),/*#__PURE__*/e(\"p\",{children:\"Dear Hiring Manager,\"}),/*#__PURE__*/e(\"p\",{children:\"I am writing to kindly request an update on the status of my application for the Marketing Coordinator position I applied for on [Date]. I am very enthusiastic about the opportunity to contribute to [Company Name] and am keen to understand the next steps in your selection process.\"}),/*#__PURE__*/e(\"p\",{children:\"If there are any additional materials or information you need from me, please let me know. I look forward to your feedback and hope to contribute to your team.\"}),/*#__PURE__*/e(\"p\",{children:\"Thank you for considering my application.\"}),/*#__PURE__*/e(\"p\",{children:\"Warm regards,\"}),/*#__PURE__*/e(\"p\",{children:\"[Your Name]\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Most Important Thing to Remember in Clarification Emails\"})}),/*#__PURE__*/e(\"p\",{children:\"In the bustling arena of workplace interactions, where every email can be a pivot point for success or misunderstanding, mastering the craft of professional correspondence is not just beneficial; it's essential. Proper grammar stands as the cornerstone of conveying your message with clarity and authority. It sets a tone that speaks volumes about your attention to detail and respect for the recipient.\"}),/*#__PURE__*/e(\"p\",{children:\"Imagine receiving an email littered with errors; it doesn't exactly inspire confidence, does it? This is why taking extra care to proofread emails before hitting send is more than good practice\u2014it's a reflection of your professionalism. When crafting business emails, consider them as extensions of yourself\u2014every sentence should embody precision and intentionality.\"}),/*#__PURE__*/e(\"p\",{children:\"The key lies in maintaining balance: being concise without coming off as curt; being polite without overdoing formalities. Whether you're requesting contact details from a new client or confirming meeting agendas, each word you choose either builds up this balance or tips the scales against you.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"So next time you\u2019re drafting that crucial follow-up email after an interview or sending out invoice clarifications\u2014pause for a moment to review if what\u2019s on screen mirrors the best version of your professional self.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Conclusion\"})}),/*#__PURE__*/e(\"p\",{children:\"Master how to send an email to clear up something, and you've mastered a key piece of workplace communication. Focus on precision. Your emails should be laser-targeted with clarity, eliminating any chance for confusion.\"}),/*#__PURE__*/t(\"p\",{children:[\"There's no need to be long winded here either. Just keep it short, sweet, and to the point.\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/ai\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" Magical\"})}),\" can write and store your clarification email templates (and any email templates you use) so you can use them again and again with a click--no more copying and pasting!\"]}),/*#__PURE__*/t(\"p\",{children:[\"Download it\",/*#__PURE__*/e(i,{href:\"https://www.getmagical.com/install\",motionChild:!0,nodeId:\"M5d1JC0lW\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(a.a,{children:\" here\"})}),\" for your Chrome browser (it's free) and see why the average Magical user saves 7 hours a week on average with their repetitive tasks.\"]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "richText1", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "__FramerMetadata__"]
}
