Scrape Yahoo search results
The Yahoo Search Scraper takes a query and returns the results page as rows: query, position, title, url and description, one row per result. Five runs and 360 rows sit behind this page, and every one of those five columns was populated on every one of those rows - no empty cells anywhere in the export. position comes back as a number running contiguously from 1, so it sorts directly and a gap in your data means a row was lost downstream rather than during the scrape.
Two properties of the data matter more than the schema. The first is duplication: within a single run the url column repeats, 20 times in one 74-row export and 4, 9, 11 and 16 times in the others. These are genuine rows at genuine positions, so any count of hosts, domains or share of results has to dedupe first. The second is volatility. We ran the query python web scraping on two consecutive days: 66 distinct URLs the first day, 62 the second, and only 42 appeared in both. Of those 42 survivors, 22 had changed position, and even the top ten shared nine of ten URLs in a different order. A single export is a snapshot of one moment, and a rank-tracking programme built on one reading per quarter will report noise as movement.
Row counts are not fixed either - our five runs returned 74, 70, 73, 69 and 74 rows for one query each. Snippets ran from 6 to 417 characters with a median of 194, and 79 of the 360 ended in an ellipsis where Yahoo truncated them, so the description column wants a wide text type rather than a short varchar. Titles are usually the page title, but on 9 of the 360 rows they opened with a spaced display domain such as www. python .org › downloads; matching on url avoids that entirely. Across all 360 rows there were 168 distinct hosts, 358 https links and 2 http.
The common uses follow from the shape. Rank tracking works if you run a series rather than a single export. Competitive visibility is a group-by on host. Coverage auditing means running the same query list through this and through the Google Search Scraper and diffing the URL sets, because where two engines disagree is usually where something interesting sits. And a results page for a category-plus-city query is a lead list once the url column goes through the Email & Contact Scraper. On the legal side, a rank, a link and a snippet are facts about public web pages and none of the five columns describes a person - though the snippets are the indexed sites' own copyrighted text, which makes internal analysis ordinary and republication a separate question. Publicly available pages only, no third-party trackers on the data layer, and exports auto-delete after 30 days. Your first 500 rows are free and need no credit card.