# PeopleSearchNow.com Data Extraction: Bypass Blocks and CAPTCHAs to Scrape > Source: https://scrape.do/blog/people-search-now-scraping/ Published: 2026-02-13 · Updated: 2026-02-13 · Authors: Onur Mese · Categories: Scraping Use Cases > ⚠ No real data about a real person has been used in this article. Target URLs have been modified by hand to not reveal any personal information of a real person. PeopleSearchNow.com is a free people search engine that lets you look up names, addresses, phone numbers, and approximate ages without creating an account. **But scraping it? That's a different story.** The site sits behind Cloudflare, blocks all non-US traffic on sight, and throws slider CAPTCHAs at anything that looks even slightly automated. *Most scrapers won't even get past the front door, let alone pull structured data out of a profile page.* In this guide, we'll show you how to bypass all of that and extract clean, structured data using [Python web scraping](https://scrape.do/blog/python-web-scraping/) and Scrape.do. [Find fully functioning code here. ⚙](https://github.com/scrape-do/scrapedo-scrapers/tree/main/peoplesearchnow-scraper) ## Why Is Scraping PeopleSearchNow.com Difficult? PeopleSearchNow might look like a simple lookup tool, but it's one of the most heavily guarded people search sites when it comes to blocking automated access. Whether you're running a basic script or a full [web scraping](https://scrape.do/blog/web-scraping/) pipeline, you'll hit a wall for two main reasons: ### Georestricted to US IPs Only The first thing PeopleSearchNow checks is where you're coming from. If your IP address isn't located in the United States, the site doesn't even bother loading. **It drops you straight into a Cloudflare block page with no way forward.** ![peoplesearchnow blocked](/uploads/blog/people-search-now-geoblock.png) This means any scraping attempt from outside the US is dead on arrival; no redirect, no fallback, just a hard block. Even most datacenter proxies and basic VPNs get flagged, since Cloudflare can tell the difference between a residential connection and a server farm. ### Protected by Cloudflare with CAPTCHA Challenges Getting past the geoblock is only half the battle. Even with a US-based IP, Cloudflare runs a security verification check on every request before letting you through: ![peoplesearchnow cloudflare verification](/uploads/blog/people-search-now-cloudflare.png) And if your request looks even slightly suspicious (automated headers, missing JavaScript execution, rapid requests), it escalates to a full slider CAPTCHA: ![peoplesearchnow captcha](/uploads/blog/people-search-now-captcha.png) The CAPTCHA page itself spells it out: rapid taps, disabled JavaScript, bot activity, or developer tools will all trigger it. This means standard libraries like `requests` or `httpx` are instantly rejected. You'd need a full headless browser setup with fingerprint spoofing just to have a chance, and even that's not guaranteed. **But there's a cleaner way:** ### How Scrape.do Bypasses These Blocks ***Scrape.do solves all of PeopleSearchNow's defenses in a single API call.*** When you enable `super=true` and set `geoCode=us`, your request gets routed through premium US-based residential IPs from Scrape.do's pool of 150M+ rotating proxies. Not datacenter IPs that get flagged instantly; **real residential connections that look like actual US users.** 🌐 On top of that, Scrape.do's anti-bot engine handles Cloudflare's JavaScript challenges and CAPTCHA triggers automatically. It mimics real browser behavior with proper TLS fingerprints, dynamic headers, and intelligent retries. **The result?** You get a fully rendered, unblocked HTML page, ready to parse with `BeautifulSoup`. ## Creating a Basic PeopleSearchNow Scraper We'll start with a PeopleSearchNow profile page and walk through getting access, extracting each data point, and printing it all in a clean format. First things first; **privacy.** No real person's data is being used here. The profile below has been modified with entirely fictional information: ![peoplesearchnow scraper](/uploads/blog/people-search-now-scraping.png) When you try it yourself, just run a search on the site and use the URL of any result page. ### Prerequisites We'll be using Python for this guide, along with two libraries: `requests` for sending HTTP requests, and `BeautifulSoup` for parsing the returned HTML. If you don't have them installed yet, run: ```bash pip install requests beautifulsoup4 ``` You'll also need an API key from Scrape.do, which you can [get for free by signing up in <1min](https://dashboard.scrape.do/sign-up) (no credit card required). ### Sending a Request and Verifying Access Once you have your token, it's time to send your first request. We'll target a PeopleSearchNow profile page. The goal at this stage is simple: get a **200 OK** response and confirm that the page is accessible and fully rendered. Here's how we do that using Scrape.do with `geoCode=us` and `super=true`: ```python import requests import urllib.parse from bs4 import BeautifulSoup # Your Scrape.do API token token = "" # Target URL target_url = "https://www.peoplesearchnow.com/person/anakin-skywalker" encoded_url = urllib.parse.quote_plus(target_url) # Scrape.do API endpoint (US-based residential proxies) api_url = f"https://api.scrape.do/?token={token}&url={encoded_url}&super=true&geoCode=us" # Send the request and parse HTML response = requests.get(api_url) soup = BeautifulSoup(response.text, "html.parser") print(response) ``` If everything is working correctly, you should see this in your terminal: ```css ``` This confirms we've successfully bypassed the geoblock, Cloudflare verification, and CAPTCHA challenges. Now we're ready to extract structured data from the page. ### Extracting Name and Age The profile page displays the person's name in an `

` tag with a `name` class, and the age is stored in a `
` with an `age` class, typically formatted as `"Approximate Age: 62"`. We target both elements directly by their class names and strip the age prefix to get a clean value. Here's how: ```python # Extract name name_elem = soup.find("h1", class_="name") name = name_elem.text.strip() if name_elem else "" # Extract age age_elem = soup.find("div", class_="age") age = age_elem.text.strip().replace("Age: ", "").replace("Age ", "") if age_elem else "" print("Name:", name) print("Age:", age) ``` You should get something like: ```css Name: Anakin Skywalker Age: 62 ``` Note the safety checks: if the element doesn't exist on a particular profile, the code returns an empty string instead of crashing. This is important because not every profile has complete data. ### Extracting Address, City, and State PeopleSearchNow displays the current address inside a `
` with an `address` class. The street address and city/state are split across separate `` elements inside that container. The first `` holds the street address, and the second contains the city and state in a `"City, State"` format that we can split by comma. Here's the code: ```python # Extract address information address_elem = soup.find("div", class_="address") if address_elem: address_parts = address_elem.find_all("span") address = address_parts[0].text.strip() if len(address_parts) > 0 else "" city_state = address_parts[1].text.strip() if len(address_parts) > 1 else "" # Parse city and state from "City, State" format if city_state and "," in city_state: city, state = [part.strip() for part in city_state.split(",", 1)] else: city = city_state state = "" else: address = "" city = "" state = "" print("Address:", address) print("City:", city) print("State:", state) ``` If it all went right, you should see: ```css Address: 308 Droid Lane City: Sandmore State: Tatooine TA ``` The extra handling here is intentional. Some profiles may not have a current address listed, and the city/state format can vary, so we account for both edge cases. ### Final Code and Output Below is the complete script that handles the full request, parses the HTML, and extracts all the structured data: ```python import requests import urllib.parse from bs4 import BeautifulSoup # Your Scrape.do API token token = "" # Target URL target_url = "" # Example: https://www.peoplesearchnow.com/person/anakin-skywalker encoded_url = urllib.parse.quote_plus(target_url) # Scrape.do API endpoint - enabling "super=true" and "geoCode=us" for US-based residential proxies api_url = f"https://api.scrape.do/?token={token}&url={encoded_url}&super=true&geoCode=us" # Send the request and parse HTML response = requests.get(api_url) soup = BeautifulSoup(response.text, "html.parser") # Extract name name_elem = soup.find("h1", class_="name") name = name_elem.text.strip() if name_elem else "" # Extract age age_elem = soup.find("div", class_="age") age = age_elem.text.strip().replace("Age: ", "").replace("Age ", "") if age_elem else "" # Extract address information address_elem = soup.find("div", class_="address") if address_elem: address_parts = address_elem.find_all("span") address = address_parts[0].text.strip() if len(address_parts) > 0 else "" city_state = address_parts[1].text.strip() if len(address_parts) > 1 else "" # Parse city and state from "City, State" format if city_state and "," in city_state: city, state = [part.strip() for part in city_state.split(",", 1)] else: city = city_state state = "" else: address = "" city = "" state = "" # Print output print("Name:", name) print("Age:", age) print("Address:", address) print("City:", city) print("State:", state) ``` And here's all the data we've parsed in clean format: ```css Name: Anakin Skywalker Age: 62 Address: 308 Droid Lane City: Sandmore State: Tatooine TA ``` ## Conclusion Between hard geoblocks, Cloudflare's security verification, and slider CAPTCHAs that trigger on anything automated, PeopleSearchNow is built to keep scrapers out. **But with Scrape.do, none of that matters:** * Premium residential proxies with US geo-targeting 🌎 * Automatic CAPTCHA and Cloudflare bypass 🔑 * Only pay for successful requests ✔✔ [Get 1000 free credits and start scraping now.](https://dashboard.scrape.do/sign-up)