Google

Google Ads Keyword Report Sample CSV (Dirty + Clean)

A production-realistic Google Ads keyword performance export (4,800 rows) covering structural issues that silently destroy automated CSV parsers. The Google Ads quirk: the CSV prepends two metadata rows before the actual header. Row 1 = report title, Row 2 = date range. When pandas reads this with pd.read_csv(), it treats the title as the header, causing every df['Clicks'] reference to throw KeyError unless skiprows=2. The 'dirty' version includes metadata header/footer, 1,120 zero-impression zombie keywords, Cost values with $ symbols, and special characters (+, []) in keyword text denoting match types. Perfect for testing ETL parser robustness (Supermetrics, Funnel.io) and account pruning workflows. Process everything locally — your PPC data never leaves your browser.

Live Interactive Preview

Live Data Preview

See how this messy google data looks before downloading. All processing happens locally in your browser.

💡 Pro Tip: Pandas just read 'Keywords performance report' as your header row. Run this CSV through Format Cleaner to auto-strip metadata headers/footers and parse the real data. Zero KeyErrors.

⚡ Next Step: Which exact-match keywords have Quality Score < 5 but are still burning budget? Query this CSV with SQL in your browser — instant account pruning, no database needed.

Data Schema Definition

ColumnTypeDescription
KeywordstringSearch term with match type modifiers: +broad, "phrase", [exact]. Special chars are semantic; do not strip.
Match typestringEnum: Broad | Phrase | Exact. Mixed casing across exports; normalize before grouping.
Keyword statestringEnum: Enabled | Paused | Removed. 'Removed' keywords still appear in historical reports; filter for active analysis.
ClicksintegerValidated clicks. Often 0 for zombie keywords consuming impression share without converting.
Coststring⚠️ TRAP: Contains '$' currency symbol. Forces string type; cast fails silently. Strip symbol before aggregation.
Impr. (Abs. Top) %stringAbsolute top impression percentage. Contains '%' char; parse to float. NULL = no eligible auctions.
Quality Scoreinteger1-10 scale. Displayed as '--' for new/unrated keywords. Cast fails on '--'; replace with NULL.
CampaignstringCampaign name. Required context; keyword alone is not unique across campaigns.
Ad groupstringAd group name. Keywords are scoped to ad groups; always include in composite key.
ConversionsdecimalAttributed conversions. May be fractional with data-driven attribution; round only for display.

⚠️ Highlighted rows contain known data traps. Review descriptions before building ETL pipelines.