CSV Deduper Normalizer
Pricing
from $1.95 / 1,000 item processeds
CSV Deduper Normalizer
Deduplicate and normalize CSV-style rows. Clean whitespace, casing, domains, URLs, and emails, then output kept and duplicate rows plus clean CSV/JSON files.
CSV Deduper Normalizer
Pricing
from $1.95 / 1,000 item processeds
Deduplicate and normalize CSV-style rows. Clean whitespace, casing, domains, URLs, and emails, then output kept and duplicate rows plus clean CSV/JSON files.
You can access the CSV Deduper Normalizer programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "rEZDTnE2fPJOKwbR9" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/junipr~csv-deduper-normalizer/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-junipr-csv-deduper-normalizer", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/junipr~csv-deduper-normalizer/runs": { "post": { "operationId": "runs-sync-junipr-csv-deduper-normalizer", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/junipr~csv-deduper-normalizer/run-sync": { "post": { "operationId": "run-sync-junipr-csv-deduper-normalizer", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "csvText": { "title": "CSV text", "type": "string", "description": "CSV data with a header row.", "default": "" }, "csvUrl": { "title": "Public CSV URL", "type": "string", "description": "CSV URL fetched only when enabled and csvText is empty.", "default": "" }, "rows": { "title": "Inline rows", "type": "array", "description": "Structured rows used instead of CSV text.", "items": { "type": "object" }, "default": [] }, "delimiter": { "title": "Delimiter", "type": "string", "description": "Single-character CSV delimiter.", "default": "," }, "keyFields": { "title": "Dedupe key fields", "type": "array", "description": "Fields combined into the duplicate key.", "items": { "type": "string" }, "default": [ "domain" ] }, "domainFields": { "title": "Domain fields", "type": "array", "description": "Field names whose values should be normalized as domains.", "items": { "type": "string" }, "default": [ "domain" ] }, "urlFields": { "title": "URL fields", "type": "array", "description": "Field names whose values should be normalized as URLs.", "items": { "type": "string" }, "default": [ "url" ] }, "emailFields": { "title": "Email fields", "type": "array", "description": "Field names whose values should be validated as email addresses.", "items": { "type": "string" }, "default": [ "email" ] }, "lowercaseFields": { "title": "Lowercase fields", "type": "array", "description": "Field names whose string values should be lowercased.", "items": { "type": "string" }, "default": [] }, "titleCaseFields": { "title": "Title-case fields", "type": "array", "description": "Field names whose string values should be converted to title case.", "items": { "type": "string" }, "default": [] }, "trimWhitespace": { "title": "Trim whitespace", "type": "boolean", "description": "Trim leading and trailing whitespace from string fields.", "default": true }, "collapseWhitespace": { "title": "Collapse whitespace", "type": "boolean", "description": "Collapse repeated internal whitespace in normalized string fields.", "default": true }, "includeDuplicates": { "title": "Include duplicate rows", "type": "boolean", "description": "Include duplicate rows in the dataset output instead of summary-only counts.", "default": true }, "fetchUrls": { "title": "Fetch CSV URL", "type": "boolean", "description": "Fetch csvUrl when csvText and inline rows are empty.", "default": false }, "fetchTimeoutMs": { "title": "Fetch timeout", "minimum": 1000, "maximum": 30000, "type": "integer", "description": "Maximum time to wait when fetching a public CSV URL.", "default": 10000 }, "allowPrivateUrls": { "title": "Allow private URLs", "type": "boolean", "description": "Allow fetching private or local network CSV URLs.", "default": false }, "maxCsvBytes": { "title": "Max CSV bytes", "minimum": 1000, "maximum": 5000000, "type": "integer", "description": "Maximum number of CSV bytes to read from text or fetched content.", "default": 500000 }, "maxItems": { "title": "Max rows", "minimum": 1, "maximum": 50000, "type": "integer", "description": "Maximum number of CSV or inline rows to process.", "default": 100 }, "includeReport": { "title": "Include clean files and report", "type": "boolean", "description": "Write cleaned CSV, duplicate summary, and Markdown report artifacts.", "default": true }, "dryRun": { "title": "Dry run", "type": "boolean", "description": "Validate and summarize input without writing paid dataset rows.", "default": false }, "debug": { "title": "Debug logs", "type": "boolean", "description": "Enable additional diagnostic log output.", "default": false } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for CSV Deduper Normalizer from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: