CSV Profiler - Instant Data Quality Report for Any CSV
Pricing
from $2.40 / 1,000 profiled csv files
CSV Profiler - Instant Data Quality Report for Any CSV
Profile any CSV by URL or paste: per-column types, null rates, unique counts, min/max/mean/median/stddev, top values, quality warnings (mostly-null, mixed-type, constants, identifiers). Up to 200k rows. $0.003 per file whatever its size, no start fee — vs $0.015+ measured incumbents.
Pricing
from $2.40 / 1,000 profiled csv files
Rating
0.0
(0)
Developer
Broke to Built
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
CSV Profiler — Instant Data Quality Report for Any CSV
Point it at a CSV URL or paste raw CSV — get a full data profile back in seconds: per-column types, null rates, unique counts, min/max/mean/median/stddev, top values, and plain-English quality warnings. Up to 200,000 rows per file, online, by API, or as an agent tool via Apify MCP.
Before you import, join, train on, or bill against a dataset, you want to know: which columns are secretly half-empty, which "numeric" column has strings in it, which field is a constant, which is really an ID. That is exactly what this profile answers — the first 10 minutes of every data-cleaning session, automated.
What you get
- rowCount / columnCount
- columns — for each column: inferred
type(integer/float/string/date/boolean),nullPct,unique, numeric stats (min/max/mean/median/stddev) or string length range, and the top 5 values with counts - warnings — mostly-null columns, mixed-type columns, constants, possible identifiers, parse errors
- Fail-soft: an unfetchable or empty file never fails the run — it returns
{ok: false, error}and is never charged.
Input
{ "url": "https://example.com/data.csv", "maxRows": 5000 }
Also: urls (bulk array, one profile each) and csv (paste raw text). Headerless files get col_1, col_2, … automatically.
Output (real run — the classic Titanic dataset)
{"ok": true,"rowCount": 891,"columnCount": 12,"columns": [{"name": "Age","type": "float","nullPct": 19.87,"unique": 88,"stats": { "min": 0.42, "max": 80, "mean": 29.7, "median": 28, "stddev": 14.52 },"topValues": [{ "value": "24", "count": 30 }]}],"warnings": ["Column \"Cabin\" is 77.1% null.", "Column \"PassengerId\" has all-unique values (possible identifier)."]}
Pricing
$0.003 per file profiled — however many rows and columns it has (up to the 200k-row cap). No start fee. Unfetchable and empty files are never charged.
Measured against store incumbents (2026-08-07): q_services/csv-json-data-quality-profiler charges $0.01 start + $0.005 per item, perryay/data-validator-profiler $0.02 start + $0.01 per batch-profile. One file here costs $0.003 vs $0.015–$0.03 there.
Honest limits
- Types are inferred from values, majority-rules per column; a column of ZIP codes reads as
integer(leading zeros stripped by whatever wrote the CSV, not by us — we treat values as text until classified). maxRows(default 5,000, max 200,000) caps profiling depth; rows beyond it are not read. Stats describe the profiled slice.- Delimiter/quoting handled by Papa Parse 5.5 (pinned); exotic fixed-width or multi-table sheets are out of scope.
- Dates are detected for ISO-like formats (
2024-01-15, with optional time);01/15/2024classifies as string — deliberate, since its meaning is locale-ambiguous.
FAQ
How do I use this for data validation in a pipeline?
Profile the incoming file, then assert on the record: reject when warnings is non-empty, when a required column's nullPct exceeds your threshold, or when a column's type changed since the last delivery.
What does "possible identifier" mean? Every non-null value in the column is unique — a strong signal it is a key, not a feature. Useful for spotting columns to exclude from ML training.
Can it handle files without headers?
Yes — when no header row is detected, columns become col_1, col_2, … and everything else works the same.
How are booleans detected? true/false, yes/no, y/n, t/f, 1/0 (case-insensitive) — majority-rules with the other candidates per column.
Why did some rows come back ok: false?
The URL 404'd, timed out, or returned empty content. Recorded with the exact error, never charged.
Use from code or AI agents
curl -s "https://api.apify.com/v2/acts/EliAI~csv-profiler/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-X POST -H 'Content-Type: application/json' \-d '{"url": "https://example.com/export.csv"}'
Agents: connect Apify MCP and call the EliAI/csv-profiler tool.
- Capability: profile one or many CSV files — column types, null rates, stats, top values, quality warnings
- Required input:
url/urlsorcsv - Returns: one profile record per file;
columns+warningssummarize data quality - Bounded:
maxRowscaps rows read; failures isolate per file - Side effects: none