# Clean a phone list and export it to CSV and Excel

**Use case:** 

Checks every number in a contact list and writes the result out as real downloadable CSV and Excel files, with all your original columns kept and country, line type, region, carrier, timezone and E.164 format added next to them.

## Input

```json
{
  "data": [
    {
      "name": "Ana Silva",
      "company": "Silva Ltd",
      "phone": "+44 7825 123456"
    },
    {
      "name": "Ben Okafor",
      "company": "Okafor & Co",
      "phone": "0161 496 0123"
    },
    {
      "name": "Cara Lind",
      "company": "Lind Studio",
      "phone": "+1 212 555 0123"
    },
    {
      "name": "Dan Reeves",
      "company": "Reeves Ltd",
      "phone": "+44 900 123 4567"
    },
    {
      "name": "Eve Mbeki",
      "company": "Mbeki Group",
      "phone": "+61 412 345 678"
    },
    {
      "name": "Frank Ortiz",
      "company": "Ortiz SA",
      "phone": "call the office"
    },
    {
      "name": "Gina Haas",
      "company": "Haas Studio",
      "phone": "+44 56 0000 0000"
    },
    {
      "name": "Ana Silva (again)",
      "company": "Silva Ltd",
      "phone": "07825 123456"
    }
  ],
  "fileFormat": "auto",
  "defaultRegion": "GB",
  "flagPremiumRate": true,
  "flagVoip": true,
  "flagNonPersonal": true,
  "markDuplicates": true,
  "lookupRegion": true,
  "lookupCarrier": true,
  "lookupTimezone": true,
  "keep": "all",
  "exportFormats": [
    "csv",
    "xlsx"
  ]
}
```

## Output

```json
{
  "phone": {
    "label": "Phone (as given)",
    "format": "text"
  },
  "name": {
    "label": "Name",
    "format": "text"
  },
  "company": {
    "label": "Company",
    "format": "text"
  },
  "phoneStatus": {
    "label": "Verdict",
    "format": "text"
  },
  "phoneReason": {
    "label": "Reason",
    "format": "text"
  },
  "phoneE164": {
    "label": "E.164",
    "format": "text"
  },
  "phoneCountry": {
    "label": "Country",
    "format": "text"
  },
  "phoneType": {
    "label": "Line type",
    "format": "text"
  },
  "isMobile": {
    "label": "Mobile",
    "format": "boolean"
  },
  "phoneRegion": {
    "label": "Region",
    "format": "text"
  },
  "phoneCarrier": {
    "label": "Allocated carrier",
    "format": "text"
  },
  "lineChecked": {
    "label": "Live line checked",
    "format": "boolean"
  }
}
```

## About this Actor

This example demonstrates how to use [Bulk Phone Number Validator & Cleaner: Carrier, CSV or Sheet](https://apify.com/nerolabs/phone-number-validator.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/nerolabs/phone-number-validator.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/nerolabs/phone-number-validator.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
