# Independent Insurance Agencies · IIABA Contacts (`corent1robert/independent-insurance-agencies`) Actor

Export US independent insurance agencies — name, email, phone, website, LinkedIn, carriers. Filter by state or paste profile URLs. One row per agency. Public listings. No login.

- **URL**: https://apify.com/corent1robert/independent-insurance-agencies.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 agency with emails

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **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 usage examples, see the [API](#api) section below.

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).

# README

## Independent Insurance Agencies · IIABA Contacts

Export **US independent insurance agencies** from the public Insurance Directory (IIABA / Big I) — name, email, phone, **website, LinkedIn**, carriers, city, and state. Filter by state or paste profile URLs. One row per agency.

**No login. No API key. No Insurance Directory account.**

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| Carrier / wholesaler BD | Independent agencies that already place business | **Florida** or **California** · contacts on · website / LinkedIn on |
| AMS / insurtech / agency-network SDR | CRM list with mailbox + site | One state · 20-row first run · then raise Max agencies |
| Marketing agency | Territory map of independents | Empty states = nationwide · contacts on |
| Market research | How many IIABA members per state | Turn **IIABA members only** on |
| Ops / data | Enrich profile URLs you already have | Paste **Profile URLs** |

**What you get by default:** agency name, city, state, ZIP, street, IIABA flag, profile URL, plus **website, LinkedIn, Facebook, carriers, coverages, hours and principal** when the public profile publishes them. Email and phone **only when printed** — never invented. Typical Florida listing fill (Aug 2026): **~94% phone**, **~30% email**, **~56% IIABA members**. Website / LinkedIn fill only on claimed profiles (not every card).

**Contacts-only:** turn **Website, LinkedIn, carriers and hours** off if you only need the state-list mailbox and phone.

### How to use

1. Open this Actor in Apify Console.
2. Keep **Florida** (or pick another state). Leave states empty for nationwide.
3. Leave **Only rows with email or phone** on, and leave **Website, LinkedIn, carriers and hours** on.
4. Click **Start**.
5. Download JSON / CSV / Excel — views: **Overview**, **Outreach CRM**, **Carriers**.

**Max agencies = 0** → no Actor-side ceiling (Free plan still stops at **20** / run).

### Ready-made examples (published tasks)

| Example | Best for |
|---------|----------|
| [Florida independent agencies with emails](https://apify.com/corent1robert/independent-insurance-agencies/examples/florida-independent-agencies-emails) | Carrier / AMS outreach in FL |
| [California independent agencies contacts](https://apify.com/corent1robert/independent-insurance-agencies/examples/california-independent-agencies-contacts) | West Coast territory |
| [Texas IIABA member agencies](https://apify.com/corent1robert/independent-insurance-agencies/examples/texas-iiaba-member-agencies) | Big I members only |
| [Enrich Insurance Directory profile URLs](https://apify.com/corent1robert/independent-insurance-agencies/examples/enrich-insurance-directory-profile-urls) | Carriers + website from pasted links |

### What it extracts

| Category | Fields |
|----------|--------|
| Identity | `name`, `legalName`, `agencyId`, `agencyProfileId`, `iiabaId`, `iiabaMember`, `principalName`, `principalTitle` |
| Contact | `email`, `emails`, `phone`, `phones`, `principalPhone`, `website` |
| Social | `linkedin`, `facebook`, `instagram`, `twitter`, `youtube`, `tiktok` |
| Location | `street`, `city`, `state`, `zip`, `latitude`, `longitude`, `statesServed`, `hours` |
| Lines | `offersPersonal`, `offersCommercial`, `offersLife`, `carriers`, `coverages`, `services`, `team` |
| Profile | `about`, `tagline`, `foundingYear`, `rating`, `reviewCount`, `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `profileUrl`, `hasEmail`, `hasPhone`, `scrapedAt` |

The directory “Call Now” number (`855-372-0071`) and mailboxes on Insurance Directory / Trusted Choice / IIABA hosts are dropped. Some listing phones are 833/844 tracking numbers — they still reach the agency, so they are kept.

**Typical fill (Florida listing + profiles, Aug 2026):** ~94% phone, ~30% email, ~56% IIABA member. Website, LinkedIn and carriers appear when the agency published them on the public profile — not on every card. A 833/844 listing phone is kept; a local profile phone is preferred as the primary `phone`.

### How it works

1. Read the public Insurance Directory list for the states you picked (or nationwide).
2. Copy name, email, phone, and address **when they are printed** on the listing.
3. Open each matching public profile and copy website, LinkedIn, carriers, coverages, hours and principal **when published**.
4. Write one row immediately — the Dataset fills as the run goes.

### How much does it cost to scrape independent insurance agencies?

HTTP-only (no browser). Pay-per-event on each exported agency, plus a ~$0.00005 start. Compute on 512 MB is typically cents.

| | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Agency with email | $0.00399 | $0.00349 | $0.00299 | $0.00249 | $0.00249 | $0.00249 |
| Agency with phone only | $0.00249 | $0.00219 | $0.00189 | $0.00169 | $0.00169 | $0.00169 |
| Agency without contact | $0.00149 | $0.00129 | $0.00109 | $0.00099 | $0.00099 | $0.00099 |
| 20 emails (Try) | **$0.08** | $0.07 | $0.06 | $0.05 | $0.05 | $0.05 |
| 1,000 with email | **$3.99** | $3.49 | $2.99 | $2.49 | $2.49 | $2.49 |
| ~4,000 Florida mix (~30% email) | **~$10** | lower | lower | lower | lower | lower |

Free Apify plan: **20 agencies per run**. Paid plans follow your max charge.

### Is it legal to scrape Insurance Directory?

This Actor only copies data the Insurance Directory publishes on **public** listing and profile pages. Names, emails and phones are personal data — make sure your use complies with GDPR, CAN-SPAM, TCPA and any rules that apply to you. This is not legal advice.

### Is scraping Insurance Directory free?

The directory does not charge to view public listings. You still pay Apify PPE (and a little compute). There is no high-volume free path.

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `states` | array | `["FL"]` prefill | US states. Empty = nationwide. |
| `onlyWithContact` | boolean | `false` (`true` in Try) | Keep rows with published email and/or phone. |
| `iiabaMembersOnly` | boolean | `false` | Keep agencies marked as IIABA members. |
| `profileUrls` | array | — | Public profile URLs. When set, states are ignored. |
| `includeProfileDetails` | boolean | **`true`** | Website, LinkedIn, carriers, coverages, hours, principal. Turn **off** for contacts-only. |
| `maxItems` | integer | `20` | **0** = no numerical cap. **Free plan: 20 / run.** |

API-only (not in Console): `maxConcurrency` (default 8, max 20), `proxyConfiguration` (`{ "useApifyProxy": true }` on the platform), `verboseLogs` (`false`).

```json
{
  "states": ["FL"],
  "onlyWithContact": true,
  "includeProfileDetails": true,
  "maxItems": 20
}
```

```json
{
  "profileUrls": ["https://www.insurancedirectory.com/agency-profile/1393562/1st-direct-insurance-agency-inc/"],
  "maxItems": 1
}
```

### Output example

```json
{
  "agencyId": "42391",
  "agencyProfileId": "113132",
  "name": "Amelia Insurance Agency Inc",
  "principalName": "Pierre Laporte",
  "principalTitle": "President",
  "email": "msullivan@ameliainsurance.com",
  "phone": "(904) 261-3606",
  "phones": ["(904) 261-3606", "(844) 702-2589"],
  "street": "2384 Sadler Rd",
  "city": "Fernandina Beach",
  "state": "FL",
  "zip": "32034-4555",
  "website": "http://www.ameliainsurance.com",
  "linkedin": "https://www.linkedin.com/company/amelia-insurance-agency-inc",
  "facebook": "https://www.facebook.com/AmeliaInsurance/",
  "carriers": ["BondExchange", "Travelers", "Nationwide", "MAPFRE Insurance"],
  "coverages": ["Automobile", "Home", "Boat", "Life"],
  "hours": "Mo 09:00-17:00,Tu 09:00-17:00,We 09:00-17:00,Th 09:00-17:00,Fr 09:00-17:00",
  "foundingYear": 1946,
  "iiabaMember": true,
  "profileUrl": "https://www.insurancedirectory.com/agency-profile/113132/amelia-insurance-agency-inc/",
  "hasEmail": true,
  "hasPhone": true,
  "hasWebsite": true,
  "hasLinkedin": true
}
```

Download JSON, CSV, Excel, or HTML from the Dataset tab.

### Also available

**[ORIAS · French Insurance Intermediaries](https://apify.com/corent1robert/orias-scraper)** — emails, phones and ORIAS numbers from the French public register.

**[ASHI Home Inspectors](https://apify.com/corent1robert/ashi-homeinspector-scraper)** — US inspector emails and phones by state.

**[NMLS · Lookup MLOs, Sponsors & State Licenses](https://apify.com/corent1robert/nmls-consumer-access-lookup)** — US mortgage licenses, phones and published emails.

### Local development

```bash
cd independent-insurance-agencies
npm install
cp .actor/INPUT.json storage/key_value_stores/default/INPUT.json
apify run --purge
```

Use `apify run` (not `npm start`). Default **INPUT.json** must include required schema fields (or pass `--input-file`). Local `storage/` is not synced to Apify Console. Root `input.json` is merged locally; CLI KV input wins on key collision.

`npm test` runs parser unit tests (no network).

### FAQ

**Does every row have an email?** No. The Actor never invents a mailbox. Turn **Only rows with email or phone** on to skip empty cards. Many listings have a phone without an inbox.

**Why are some phones 833 / 844?** The directory enables call tracking on some cards. The number still rings the agency.

**TrustedChoice.com?** That site sits behind a bot wall. This Actor uses the public Insurance Directory listings instead.

**Will a 20-row Try finish in 5 minutes?** Yes — HTTP-only. About 20 public profiles, typically under a minute.

### Support

Questions, custom scrapers, or integrations: <corentin@outreacher.fr>.

Ready? Pick a state, keep contacts on, and click Start.

# Actor input Schema

## `states` (type: `array`):

Keep agencies listed in these states. Leave empty for a nationwide list.

## `onlyWithContact` (type: `boolean`):

Get a CRM-ready file. Skip cards that do not publish an agency mailbox or phone on the public listing.

## `iiabaMembersOnly` (type: `boolean`):

Keep agencies the directory marks as Independent Insurance Agents & Brokers of America members.

## `includeProfileDetails` (type: `boolean`):

Open each public profile and copy website, LinkedIn, Facebook, carriers, coverages, hours and the principal when published. Leave on for ICP / CRM. Turn off for a faster contacts-only list.

## `profileUrls` (type: `array`):

Paste public profile links (one per line). Example: https://www.insurancedirectory.com/agency-profile/1393562/1st-direct-insurance-agency-inc/

## `maxItems` (type: `integer`):

Stop after this many matching agencies. **0 = no numerical cap**.

## Actor input object example

```json
{
  "states": [
    "FL"
  ],
  "onlyWithContact": true,
  "iiabaMembersOnly": false,
  "includeProfileDetails": true,
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

All exported independent insurance agencies.

## `overview` (type: `string`):

Name, city, state, email, phone, profile URL.

## `outreach` (type: `string`):

Name, email, phone, address for CRM import.

## `carriers` (type: `string`):

Carriers and personal/commercial flags.

## `runLog` (type: `string`):

Plain-text progress log for this run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "states": [
        "FL"
    ],
    "onlyWithContact": true,
    "includeProfileDetails": true,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/independent-insurance-agencies").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "states": ["FL"],
    "onlyWithContact": True,
    "includeProfileDetails": True,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/independent-insurance-agencies").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "states": [
    "FL"
  ],
  "onlyWithContact": true,
  "includeProfileDetails": true,
  "maxItems": 20
}' |
apify call corent1robert/independent-insurance-agencies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/independent-insurance-agencies"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OfDY7SHl6wBPfJLNm/builds/c9ZIDO2XGbWfL0TIt/openapi.json
