Public JSON to CSV Feed
Under maintenancePricing
Pay per usage
Public JSON to CSV Feed
Under maintenanceFlatten inline JSON or public HTTPS JSON into Excel-safe CSV with stable export URLs for automation workflows.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Travis Berman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Turn inline JSON rows or a public HTTPS JSON endpoint into a deterministic CSV file that opens cleanly in Excel, Google Sheets, Airtable, Make, Zapier, and n8n workflows.
Why this Actor
Automation users repeatedly ask how to flatten nested API data, choose stable columns, avoid manual CSV exports, and expose workflow output at a reusable URL. This Actor provides that narrow conversion layer without requiring Airtable credentials, browser automation, or private-system access.
What it does
- accepts inline object rows or a permission-respecting public HTTPS JSON endpoint;
- selects a nested row array with
rowsPath; - flattens nested objects to dotted columns such as
customer.name; - serializes arrays as JSON strings instead of inventing columns;
- optionally projects and orders explicit columns;
- emits UTF-8 CSV with a BOM, CRLF rows, correct quote/newline escaping, and spreadsheet-formula neutralization;
- writes
OUTPUT.csv, a summary dataset row, and a named-store CSV record whose URL stays stable whenexportKeyis reused; - caps source data at 5 MB while streaming (the body is cancelled as soon as the limit is crossed), CSV output at 10 MB, and rows at 10,000.
Inline example
{"rows": [{"id": 1, "customer": {"name": "Ada", "region": "EU"}, "tags": ["priority"], "amount": 1250.5},{"id": 2, "customer": {"name": "Lin", "region": "US"}, "tags": [], "amount": 800}],"columns": ["id", "customer.name", "customer.region", "tags", "amount"],"maxRows": 1000,"exportKey": "weekly-sales"}
Public endpoint example
{"sourceUrl": "https://api.github.com/repos/apify/apify-sdk-js/commits?per_page=5","rowsPath": "","columns": ["sha", "commit.author.name", "commit.author.date", "html_url"],"maxRows": 100,"exportKey": "apify-sdk-commits"}
Provide exactly one of rows or sourceUrl. Reusing an exportKey updates the same named storage record, which is useful for scheduled feeds.
Output
The default dataset and OUTPUT record contain:
{"source": "inline","rowCount": 2,"sourceRowCount": 2,"columns": ["id", "customer.name", "customer.region", "tags", "amount"],"columnCount": 5,"truncated": false,"csvBytes": 115,"exportKey": "weekly-sales.csv","exportUrl": null,"generatedAt": "ISO timestamp"}
exportUrl is intentionally null in local runs because local file URLs are not portable. In Apify cloud it is populated from the named key-value store. A capped cloud probe verified that two runs using the same exportKey returned the same anonymously readable CSV URL.
Safety
The Actor rejects non-HTTPS URLs, credentials in URLs, custom ports, localhost/private/link-local IP literals, and hostnames resolving to private addresses. Redirects are disabled. It does not log in, use proxies, bypass access controls, or accept arbitrary request headers. Only use endpoints and data you are allowed to access.
Local development
npm cinpm testCRAWLEE_STORAGE_DIR="$PWD/storage" CRAWLEE_PURGE_ON_START=0 npm start
Pre-seed storage/key_value_stores/default/INPUT.json with an example before running. Keep APIFY_TOKEN and APIFY_IS_AT_HOME unset for deterministic local storage.
Status and pricing
The Actor is published and anonymously visible in the Apify Store. Capped cloud probes verified deterministic CSV output and a stable named-store export URL across repeated runs. The current listing is free apart from normal Apify platform usage. A future paid file-generated event remains a hypothesis until payout/KYC is complete; invalid input and source failures must never be charged.