Sentiment analysis data collection: reviews, forums and posts at scale
Quick answer
Sentiment analysis data collection pulls public opinions from review sites, forums, social platforms and app stores, then feeds them to a classifier. These platforms serve consumer traffic and rate-limit everything else, so residential proxies are the base layer. For the most common sources, Unlimited Scraper has ready targets for Reddit, Google Maps reviews and app stores that return structured JSON without selector maintenance.
Why sentiment analysis data collection breaks without the right proxies
Review platforms and forums tune their defences for consumer browsers. A datacenter IP paging through thousands of reviews gets HTTP 429 after a short burst, then a CAPTCHA, then a shadow-limit where pages load but reviews are missing. A classifier trained on that data learns the platform's throttling pattern, not customer opinion.
Opinion is regional. Google Maps reviews, app store ratings and forum discussions differ by country and often by city. Reviews of a restaurant chain in Manchester and in Melbourne are different datasets, and both require an IP that the platform associates with that region.
Pagination is stateful on many sources. Cursor-based review feeds expect the same session to continue; a rotating IP mid-pagination resets the cursor and returns page one again, filling your dataset with duplicates.
Finally, social feeds and forums render client-side and paginate with infinite scroll. Without JavaScript rendering, you capture the first few posts and nothing older.
Which Geonode proxy type fits
The recommended product for sentiment analysis data collection is residential proxies. The pool of 2.5M IPs online across 195+ countries supports country, state and city targeting, so review collection for a location-based business can be sampled where the customers are. Sticky sessions up to 24 hours hold a cursor through a long review feed; rotating mode spreads bulk collection across millions of consumer addresses.
For the standard sources, pair residential IPs with the Unlimited Scraper, which ships ready targets for Google, Amazon and other major platforms and returns structured output. That removes the selector maintenance that otherwise breaks every time a review widget changes. The general Scraper API extract endpoint handles forums and smaller review sites with JavaScript rendering and Markdown output.
ISP proxies fit a fixed watchlist of a few hundred product pages polled daily. Datacenter IPs are poorly matched to consumer platforms and should be used only for your own API endpoints or permissive sources.
- Residential — Best for: Reviews, forums, social posts by region; IP source: Real ISP devices, 2.5M online; Session: Rotating or sticky up to 24h; Price from: $0.27/GB at volume
- ISP (static residential) — Best for: Fixed watchlist polled daily; IP source: Static IPs from real ISPs; Session: Unlimited sessions; Price from: $1.25/IP
- Datacenter — Best for: Permissive sources and own endpoints; IP source: Datacenter ranges; Session: Rotating; Price from: $0.14/GB
How to set it up
- Define sources and entities: which products, places or brands, and on which platforms. Record each platform's terms and whether its content is publicly accessible without login.
- For Reddit, Google Maps and app stores, use the Unlimited Scraper targets and request JSON. For other forums and review sites, use the Scraper API extract endpoint with Markdown output.
- For custom fetchers, create a residential user per region with country targeting and a sticky session id per review feed so pagination cursors survive.
- Store each item with source, entity, region, author handle hash, timestamp, rating if present and text. Deduplicate on source plus item id before classification.
- Run your sentiment model, then sample low-confidence items per source for manual review; platform-specific slang and sarcasm are where models drift.
# verify endpoint against docs.geonode.com before publishing
import requests
USER = "USERNAME-country-gb-city-manchester-session-rev42"
PASS = "PASSWORD"
proxy = f"http://{USER}:{PASS}@premium-residential.geonode.com:9000"
url = "https://www.example-reviews.com/place/12345/reviews?page=3"
r = requests.get(
url,
proxies={"http": proxy, "https": proxy},
headers={"Accept-Language": "en-GB,en;q=0.9"},
timeout=30,
)
print(r.status_code, r.headers.get("content-type"))
Get the exact snippet for your language from the API Code Generator in the dashboard.
Sentiment-specific settings that matter
Sticky sessions per feed, rotating between feeds
Give each review feed or forum thread its own session id so cursor-based pagination stays consistent. Once a feed is exhausted, drop the session and let the next feed start from a fresh IP. Sessions can last up to 24 hours, but most feeds finish in minutes.
City targeting for location-based entities
Reviews of physical places are served by locale. Use -country-us-city-chicago style targeting so the review set matches what local customers see. State and city cannot be combined in one username; choose the one that matches how your entities are grouped.
Concurrency per platform
Geonode sets no fixed thread limit, but platforms do. Run modest parallelism per platform and high parallelism across platforms. A sudden burst on one source is what triggers CAPTCHAs; steady, spread-out collection does not.
Back-off and retry
Treat HTTP 429, 403 and unexpectedly short pages as a signal to pause that platform for a while, then retry with a new session. Retrying immediately from a new IP without a pause tends to escalate the throttling.
What to log
Keep source, entity, region, session id, status, item count per page and fetch timestamp. When review counts drop suddenly for one platform, the log shows whether the cause was throttling, a layout change or a real decline in reviews.
What Geonode gives you for sentiment analysis
- Residential IPs in 195+ countries with country, state, city and ASN targeting.
- Sticky sessions up to 24 hours for cursor-based review feeds, rotating for bulk collection.
- Unlimited Scraper with ready targets for Google, Amazon and other major platforms.
- Scraper API with JavaScript rendering and Markdown or JSON output for forums.
- HTTP, HTTPS, SOCKS5 and UDP support, 24/7 support.
Pricing for sentiment analysis data collection
Residential proxies are pay-as-you-go from $0.27/GB at volume, with an entry pack of 10 GB for $7.92, 50 GB for $34.65 and a 3-day trial for $5. No contract. Review and forum text is light on bandwidth, so a modest pack covers a large item count. The Scraper API is free for 1.5K requests per month, then $3.50 per 10K requests, with monthly unlimited from $47. ISP proxies start at $1.25 per IP and datacenter at $0.14/GB. See the pricing page.
FAQ
What is sentiment analysis data collection?
It is gathering public text that expresses opinion, such as reviews, forum posts and social comments, along with metadata like rating, date and region, so a model can classify tone and track how it changes over time per product, place or brand.
Why does sentiment analysis data collection need residential proxies?
Review platforms and forums rate-limit datacenter ranges quickly and serve regional content. Residential IPs with city targeting return the same reviews a local customer sees, and sticky sessions keep paginated feeds consistent so you do not collect duplicates.
Which sources have ready-made scraper targets?
Unlimited Scraper includes targets for Google, Amazon, eBay, LinkedIn and other major platforms, returning structured output. For forums and smaller review sites, the Scraper API extract endpoint with Markdown output handles rendering without a custom parser.
Can I collect reviews in multiple countries?
Yes. Create one residential user per country or city and run the same entity list through each. Set the Accept-Language header to match so the platform serves local-language reviews rather than a translated or default view.
What are the compliance rules for collecting opinions?
Collect only publicly available posts and reviews, follow GDPR, CCPA and each platform's terms, never collect credentials or private messages, and hash or drop author identifiers you do not need. Geonode's acceptable use policy prohibits fraud, spam and credential abuse.
How do I keep the dataset from filling with duplicates?
Deduplicate on source plus item id, not on text. Use sticky sessions during pagination so cursors do not reset, and log item counts per page so a sudden repeat of page one is caught immediately.
Start
Pick one product and one platform, run a 3-day residential trial alongside the free Scraper API tier, and check the review count against what you see in a browser. Get started or Contact sales for multi-platform volume.
Related: Review monitoring · Social media analytics · Brand protection