# Niche Places to Live Scraper (`parseforge/niche-places-to-live-scraper`) Actor

Scrape Niche Places to Live profiles: grades, population, home value, rent, income, crime, rankings and reviews. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/niche-places-to-live-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Real estate, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.20 / 1,000 place profiles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🏘️ Niche Places to Live Scraper

> 🚀 **Export the grades behind 84,000 American places in seconds.** Pick a directory or paste a profile URL and get every place as a flat 37-field row: the overall Niche grade, all 12 category grades, population, median home value, rent and household income beside the national figure, crime rates, age and rent-vs-own breakdowns, coordinates, census GEOID, the star histogram and resident reviews.

Niche grades places the way it grades schools, and those grades drive real relocation decisions. The Places to Live directory covers 43,527 towns and cities, 30,982 ZIP codes, 6,528 neighborhoods, 3,164 counties and all 51 state entries. Every page is rendered server side, so each number is in the HTML rather than behind an API key or a login.

This Actor reads that directory. It walks Niche's own sitemaps, or takes the exact profile URLs you paste, and returns one row per place with the grades and the statistics tables intact, each figure sitting next to the national baseline Niche prints beside it. Four expansion pages are available on demand when you want the deeper breakdowns.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Real estate analysts and iBuyers | Score markets by school grade, crime grade and median home value before pricing |
| Relocation and HR mobility teams | Shortlist destinations for a transfer with a defensible, published grade |
| Urban planners and researchers | Build county and ZIP panels of income, tenure and demographic breakdowns |
| Lead generation teams | Segment territories by population, home value and rent bands |

### 📋 What the Niche Places to Live Scraper does

> 💡 **Why it matters:** Census tables give you the numbers but no judgement, and a real estate portal gives you listings but no context. Niche is the rare source that publishes both: a letter grade per category and the statistic behind it, with the national figure printed alongside. This Actor keeps all three together on one row, so "is this place good" and "compared to what" are columns rather than a second research job.

- 🗺️ **Five directories:** towns and cities, ZIP codes, neighborhoods, counties or states. Each is its own sitemap and each returns the same 37 columns.
- 🔗 **Or your own URLs:** paste any number of `https://www.niche.com/places-to-live/...` profiles and discovery is skipped entirely.
- 🎓 **Every grade:** the overall grade plus all 12 category grades, from Public Schools and Crime & Safety to Nightlife and Commute, read from Niche's own report card markup rather than guessed from text.
- 🇺🇸 **National baselines included:** median home value $94,700 against a national $332,700 on the same row. Niche prints the comparison and this Actor keeps it.
- 🚨 **Crime rates on every row, free:** assault, murder, rape, robbery, burglary and theft, each with its national figure. There is no Crime & Safety option to buy because those 14 facts already ship on the profile page.
- ⭐ **Reviews and the full histogram:** rating, review count and the 1 to 5 star distribution, plus up to 50 resident reviews with their tags when you ask for the reviews section.
- 🧭 **Joinable identity:** Niche GUID, census GEOID, latitude and longitude on every row, so the data merges with census tables and mapping tools without a fuzzy name match.
- ➕ **Four optional sections:** real estate, residents, rankings and reviews. Each is a separate request, each is charged as its own event, and a section that only repeats the profile page is detected and neither attached nor charged.
- 🔁 **Clean data:** one row per place, the same 37 columns every time, `N/A` and `Yes`/`No` instead of blank cells, and `error` reserved for failures.

### 🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is in production.

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🖼 `imageUrl` | string | Niche's share card for the Places to Live directory |
| 🔗 `url` | string | The profile page on Niche |
| 🆔 `entityGuid` | string | Niche's own identifier for the place |
| 🏷 `entityType` | string | Town, Zip Code, Neighborhood, County or State |
| 📍 `name` | string | Place name as Niche prints it |
| ✂️ `shortName` | string | Short form used in Niche navigation |
| 🔤 `urlFragment` | string | Slug, which ends in the two-letter state |
| 🧬 `genus` | string | Niche's internal classification of the place |
| 🗺 `location` | string | One-line location, e.g. "Town in Indiana" |
| 🇺🇸 `censusGeoId` | string | Census GEOID, for joining to ACS tables |
| 🧭 `parentGuids` | array | GUIDs of the county and state above this place |
| ✅ `isClaimed` | string | Yes or No, whether the profile is claimed |
| 💎 `isPremium` | string | Yes or No, whether the profile is premium |
| 🎓 `overallGrade` | string | Overall Niche grade, A+ through D- |
| 🔢 `gradeCount` | integer | How many category grades this place carries |
| 📚 `grades` | object | Every category grade by name |
| 🧭 `latitude` | number | From Open Graph place metadata |
| 🧭 `longitude` | number | From Open Graph place metadata |
| 🏷 `seoTitle` | string | Page title Niche publishes for the place |
| 📊 `scalars` | object | Headline figures: population, median home value, rent, income |
| 🇺🇸 `scalarsNational` | object | The national figure Niche prints beside each headline |
| 📈 `breakdowns` | object | Bar-chart tables such as Age and Education |
| 🧾 `facts` | object | Every labelled statistic, with `(national)` twins where shown |
| 🔢 `factCount` | integer | How many statistics the row carries |
| ⭐ `rating` | number | Average resident rating out of 5 |
| 💬 `reviewCount` | integer | Total resident reviews |
| 📊 `reviewDistribution` | object | Star histogram, 1 through 5 |
| 🔢 `rankingCount` | integer | How many Niche lists this place appears on |
| 🏆 `rankings` | array | Each list with the place's position and link |
| 🔢 `reviewSampleCount` | integer | How many review texts the row carries |
| 🗣 `reviewSamples` | array | Resident reviews with rating, text and tags |
| 🏘 `realEstateSection` | object | Real estate expansion, when requested |
| 👥 `residentsSection` | object | Residents expansion, when requested |
| 🥇 `rankingsSection` | object | Rankings expansion, when requested |
| 📝 `reviewsSection` | object | Reviews expansion, when requested |
| 🕒 `scrapedAt` | string | ISO 8601 timestamp of the read |
| ❌ `error` | string | Only set on a failed page, otherwise null |

Three real rows, trimmed so the nested objects fit on the page:

```json
{
  "imageUrl": "https://d33a4decm84gsn.cloudfront.net/social-share/niche-places-to-live-1910px.png",
  "url": "https://www.niche.com/places-to-live/gary-lake-in/",
  "entityGuid": "44f8d2f1-6e70-4ff3-a7cf-2f5285df7d01",
  "entityType": "Town",
  "name": "Gary",
  "shortName": "Gary",
  "urlFragment": "gary-lake-in",
  "genus": "Town",
  "location": "Town in Indiana",
  "censusGeoId": "16000US1827000",
  "parentGuids": [],
  "isClaimed": "No",
  "isPremium": "No",
  "overallGrade": "C",
  "gradeCount": 12,
  "grades": {
    "Public Schools": "D-",
    "Crime & Safety": "D",
    "Housing": "C"
  },
  "latitude": 41.58524,
  "longitude": -87.35581,
  "seoTitle": "Gary, IN - Reviews, rankings and crime | Niche",
  "scalars": {
    "Population": "68,113",
    "Median Home Value": "$94,700"
  },
  "scalarsNational": {
    "Median Home Value": "$332,700",
    "Median Rent": "$1,413"
  },
  "breakdowns": {
    "Age": {
      "<10 years": "16%",
      "10-17 years": "13%"
    }
  },
  "facts": {
    "Rent": "51%",
    "Own": "49%",
    "Assault": "215.6"
  },
  "factCount": 34,
  "rating": 2.77,
  "reviewCount": 207,
  "reviewDistribution": {
    "1": 28,
    "2": 48,
    "3": 87,
    "4": 31,
    "5": 13
  },
  "rankingCount": 0,
  "rankings": [],
  "reviewSampleCount": 3,
  "reviewSamples": [
    {
      "rating": 5,
      "text": "I love Gary, Indiana. From being able to visit the family home of the Jackson 5 (RIP Tito)…",
      "tags": [
        "Other",
        "Oct 31 2024",
        "Overall Experience"
      ]
    }
  ],
  "realEstateSection": {
    "facts": {
      "<$50k": "22%",
      "<$500": "11%"
    },
    "breakdowns": {
      "Home Values": {
        "<$50k": "22%",
        "$50-$99k": "32%"
      }
    },
    "scalars": {
      "Area Feel": "Sparse Suburban"
    },
    "rankings": [],
    "reviews": []
  },
  "residentsSection": {
    "facts": {
      "African American": "76%",
      "Hispanic": "10%"
    },
    "breakdowns": {
      "Education LevelsNational": {
        "Master's degree or higher": "5%",
        "Bachelor's degree": "10%"
      }
    },
    "scalars": {
      "Population": "68,113"
    },
    "rankings": [],
    "reviews": []
  },
  "rankingsSection": {},
  "reviewsSection": {},
  "scrapedAt": "2026-09-09T22:15:48.361Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://d33a4decm84gsn.cloudfront.net/social-share/niche-places-to-live-1910px.png",
  "url": "https://www.niche.com/places-to-live/portage-porter-in/",
  "entityGuid": "50ee8dd6-d912-48bf-bfeb-70f9540afa42",
  "entityType": "Town",
  "name": "Portage",
  "shortName": "Portage",
  "urlFragment": "portage-porter-in",
  "genus": "Suburb",
  "location": "Suburb in Indiana",
  "censusGeoId": "16000US1861092",
  "parentGuids": [],
  "isClaimed": "No",
  "isPremium": "No",
  "overallGrade": "B-",
  "gradeCount": 12,
  "grades": {
    "Public Schools": "C+",
    "Crime & Safety": "C",
    "Housing": "B-"
  },
  "latitude": 41.59245,
  "longitude": -87.17335,
  "seoTitle": "Portage, IN - Reviews, rankings and crime | Niche",
  "scalars": {
    "Population": "38,082",
    "Median Home Value": "$224,200"
  },
  "scalarsNational": {
    "Median Home Value": "$332,700",
    "Median Rent": "$1,413"
  },
  "breakdowns": {
    "Age": {
      "<10 years": "11%",
      "10-17 years": "9%"
    }
  },
  "facts": {
    "Rent": "27%",
    "Own": "73%",
    "Assault": "175.7"
  },
  "factCount": 34,
  "rating": 3.43,
  "reviewCount": 90,
  "reviewDistribution": {
    "1": 3,
    "2": 7,
    "3": 41,
    "4": 26,
    "5": 13
  },
  "rankingCount": 1,
  "rankings": [
    {
      "list": "Best Places to Raise a Family in Porter County",
      "rank": 9,
      "url": "https://www.niche.com/places-to-live/search/best-places-for-families/c/porter-county-in/"
    }
  ],
  "reviewSampleCount": 3,
  "reviewSamples": [
    {
      "rating": 4,
      "text": "Portage, IN is an affordable family friendly place to live. Everything from the post offic…",
      "tags": [
        "Current Resident",
        "Jan 30 2025",
        "Overall Experience"
      ]
    }
  ],
  "realEstateSection": {
    "facts": {
      "<$50k": "10%",
      "<$500": "2%"
    },
    "breakdowns": {
      "Home Values": {
        "<$50k": "10%",
        "$50-$99k": "2%"
      }
    },
    "scalars": {
      "Area Feel": "Sparse Suburban"
    },
    "rankings": [],
    "reviews": []
  },
  "residentsSection": {
    "facts": {
      "White": "65%",
      "Hispanic": "21%"
    },
    "breakdowns": {
      "Education LevelsNational": {
        "Master's degree or higher": "6%",
        "Bachelor's degree": "12%"
      }
    },
    "scalars": {
      "Population": "38,082"
    },
    "rankings": [],
    "reviews": []
  },
  "rankingsSection": {},
  "reviewsSection": {},
  "scrapedAt": "2026-09-09T22:15:56.236Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://d33a4decm84gsn.cloudfront.net/social-share/niche-places-to-live-1910px.png",
  "url": "https://www.niche.com/places-to-live/lake-station-lake-in/",
  "entityGuid": "5d4a7a3b-dc2a-41c8-8d2a-da1482a5007c",
  "entityType": "Town",
  "name": "Lake Station",
  "shortName": "Lake Station",
  "urlFragment": "lake-station-lake-in",
  "genus": "Suburb",
  "location": "Suburb in Indiana",
  "censusGeoId": "16000US1841535",
  "parentGuids": [],
  "isClaimed": "No",
  "isPremium": "No",
  "overallGrade": "B-",
  "gradeCount": 12,
  "grades": {
    "Public Schools": "C",
    "Crime & Safety": "unavailable",
    "Housing": "B"
  },
  "latitude": 41.57274,
  "longitude": -87.25206,
  "seoTitle": "Lake Station, IN - Reviews, rankings and crime | Niche",
  "scalars": {
    "Population": "13,185",
    "Median Home Value": "$137,400"
  },
  "scalarsNational": {
    "Median Home Value": "$332,700",
    "Median Rent": "$1,413"
  },
  "breakdowns": {
    "Age": {
      "<10 years": "17%",
      "10-17 years": "8%"
    }
  },
  "facts": {
    "Rent": "28%",
    "Own": "72%",
    "Assault": "No data available"
  },
  "factCount": 34,
  "rating": 3.41,
  "reviewCount": 27,
  "reviewDistribution": {
    "1": 0,
    "2": 3,
    "3": 15,
    "4": 4,
    "5": 5
  },
  "rankingCount": 1,
  "rankings": [
    {
      "list": "Best Places to Buy a House in America",
      "rank": 6116,
      "url": "https://www.niche.com/places-to-live/search/best-places-to-buy-a-house/"
    }
  ],
  "reviewSampleCount": 3,
  "reviewSamples": [
    {
      "rating": 3,
      "text": "I moved in at Lake Station over 19 years ago worked outside of the area. My neighbors have…",
      "tags": [
        "Current Resident",
        "6 months ago",
        "Overall Experience"
      ]
    }
  ],
  "realEstateSection": {
    "facts": {
      "<$50k": "8%",
      "<$500": "5%"
    },
    "breakdowns": {
      "Home Values": {
        "<$50k": "8%",
        "$50-$99k": "20%"
      }
    },
    "scalars": {
      "Area Feel": "Rural"
    },
    "rankings": [],
    "reviews": []
  },
  "residentsSection": {
    "facts": {
      "White": "59%",
      "Hispanic": "33%"
    },
    "breakdowns": {
      "Education LevelsNational": {
        "Master's degree or higher": "2%",
        "Bachelor's degree": "6%"
      }
    },
    "scalars": {
      "Population": "13,185"
    },
    "rankings": [],
    "reviews": []
  },
  "rankingsSection": {},
  "reviewsSection": {},
  "scrapedAt": "2026-09-09T22:16:23.863Z",
  "error": null
}
```

### ✨ Why choose this Actor

- **Grades and numbers together.** Most sources give you one or the other. A row here carries the letter grade, the statistic behind it and the national figure, so a comparison needs no second lookup.
- **Reads the markup Niche names itself.** Grades and tables come from `niche__grade`, `profile-grade__label` and `fact__table__row`, never the hashed CSS classes that change on every deploy.
- **Honest section charging.** A thin place serves its profile again at `/reviews/` instead of a 404. That duplicate is detected and neither attached to the row nor charged.
- **Nothing is guessed.** Coordinates come from Open Graph metadata, identity from Niche's own state object, and the review count is cross-checked against the star histogram.
- **Joins cleanly.** Census GEOID and Niche GUID on every row.

### 📈 How it compares to alternatives

| | This Actor | Census / ACS tables | Real estate portals |
|---|---|---|---|
| Letter grades | ✅ all 12 categories | ❌ none | ❌ none |
| National comparison on the row | ✅ | ⚠️ separate query | ❌ |
| Resident reviews | ✅ with histogram | ❌ | ⚠️ agent reviews only |
| Crime rates | ✅ free on every row | ⚠️ separate dataset | ❌ |
| Coverage | 84,000+ places | full but unranked | listings only |

### 🚀 How to use

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Niche Places to Live Scraper](https://apify.com/parseforge/niche-places-to-live-scraper?fpr=vmoqkp).
3. Either paste profile URLs into **Start URLs**, or leave it empty and pick a directory under **What to scrape**.
4. Narrow discovery with **State filter** (a two-letter code such as `in`) or **Slug contains**.
5. Set **Max items** and, if you want the deeper tables, tick the sections you need.
6. Click **Start** and download the dataset as CSV, Excel, JSON or XML.

Free-plan runs return up to 10 places as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 places per run.

### 💼 Business use cases

- **Market scoring for iBuyers.** Rank every ZIP in a metro by school grade, crime grade and median home value before committing capital.
- **Relocation shortlists.** Give a transferring employee three towns with a published grade and the numbers behind it, not an opinion.
- **Territory segmentation.** Split a sales territory by population band and median income using the same source across all 50 states.
- **Site selection.** Screen counties by commute, age distribution and tenure split before a store or clinic goes in.
- **Academic panels.** Build a county-level dataset of income, education and tenure with a consistent national baseline attached.

### 🔌 Automating Niche Places to Live Scraper

Schedule the Actor from the Apify Console and it will rerun on its own. Point a webhook at your warehouse and each finished run can drop straight into it. A monthly sweep of one state is enough to watch grades and median values drift, since Niche refreshes on a slow cadence rather than daily.

### 🌟 Beyond business use cases

- Settle an argument about which suburb is actually better with two rows instead of two opinions.
- Map every A-rated town within a commute of a new job.
- Track how a neighborhood's grades move in the years after a school opens or closes.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant with web access:

> I want to collect data from Niche Places to Live. Look at https://apify.com/parseforge/niche-places-to-live-scraper and tell me how to configure a run that returns every town in Indiana with the real estate and residents sections attached, and what each of the 37 output fields means.

### ❓ Frequently Asked Questions

#### 🗺 Which places can I collect?

Towns and cities, ZIP codes, neighborhoods, counties and states. Pick one directory per run; each one is a separate Niche sitemap.

#### 🔗 Which Niche URLs can I paste?

Any Places to Live profile, such as `https://www.niche.com/places-to-live/portage-porter-in/`. When Start URLs are set, discovery and the filters are skipped.

#### 🛡️ Do I need a proxy?

Yes. Niche serves a HUMAN captcha to unproxied traffic on every content path. The input ships with the Apify UNBLOCKER group already selected. Leave it on.

#### ➕ What do the four sections add?

Real estate adds 11 fields, residents 19, rankings up to 31 entries and reviews up to 17 reviews. Each is a separate request and its own charged event.

#### 🚨 Why is there no Crime & Safety section?

Because you already have it. All 14 crime facts and their national figures ship on the profile page, so a separate request would charge you for a duplicate.

#### 🇺🇸 What is `scalarsNational`?

The national figure Niche prints beside each headline statistic. Median home value $94,700 in the row, $332,700 nationally, on the same line.

#### 📊 How is `reviewDistribution` ordered?

By star rating, 1 through 5, each holding the number of reviews at that rating. It reconciles with the published average on every page tested.

#### 🧭 How do I join this to census data?

Use `censusGeoId`. Every town, ZIP, county and state row carries the census GEOID, so it merges with ACS tables without name matching.

#### ⚠️ What do `N/A` and `Yes`/`No` mean?

`N/A` means Niche does not publish that value for this place. `Yes` and `No` are the flag fields. Blank cells never appear.

#### 🔢 How many places can I collect in one run?

Up to 1,000,000 on a paid plan. The largest directory, towns and cities, holds 43,527 profiles.

#### 🐢 Why does a run take a while?

Every page goes through the unblocker, which solves the challenge before returning the HTML. Expect a few seconds per place, more when sections are on.

#### 🔁 Can the same place appear twice?

No. Discovery walks the sitemap once and each profile URL is fetched once per run.

#### ⏰ Can I run this on a schedule?

Yes. Schedule it in the Apify Console. Niche refreshes slowly, so monthly is usually enough.

#### 📄 What output formats are supported?

CSV, Excel, JSON, XML, JSONL and RSS, straight from the dataset tab or the API.

#### ❌ What happens when a page fails?

The Actor retries, and if the page still fails it writes a row carrying only `error` and moves on. Error rows are never charged.

### 🔌 Integrate with any app

The dataset is available through the Apify API the moment the run finishes. Use the `run-sync-get-dataset-items` endpoint for one-shot calls, webhooks to trigger downstream jobs, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.

### 🔗 Recommended Actors

- [Niche School Districts Scraper](https://apify.com/parseforge/niche-school-district-profiles-scraper?fpr=vmoqkp)
- [Opendoor Homes Scraper](https://apify.com/parseforge/opendoor-homes-scraper?fpr=vmoqkp)
- [EstateSales.net Listings Scraper](https://apify.com/parseforge/estatesales-listings-scraper?fpr=vmoqkp)
- [NYC Building Permits Scraper](https://apify.com/parseforge/nyc-building-permits-scraper?fpr=vmoqkp)
- [OpenStreetMap POI Scraper](https://apify.com/parseforge/overpass-osm-poi-scraper?fpr=vmoqkp)

***

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input and what you expected.

> **⚠️ Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Niche.com Inc. It collects only publicly available data. You are responsible for using the data in compliance with Niche's terms of use and applicable laws.

# Actor input Schema

## `startUrls` (type: `array`):

Specific Niche place profiles to scrape, e.g. https://www.niche.com/places-to-live/portage-porter-in/. When set, sitemap discovery and the filters below are skipped.

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

How many place profiles to return. Free users get up to 10 rows as a preview; paid users can collect up to 1,000,000 per run.

## `entityType` (type: `string`):

Which Niche Places to Live directory to read. Each one is a separate sitemap: towns (43,527), ZIP codes (30,982), neighborhoods (6,528), counties (3,164) and states.

## `state` (type: `string`):

Two-letter state code, e.g. "in". Niche place slugs end in their state, so this filters discovery without extra requests.

## `nameContains` (type: `string`):

Keep only places whose URL slug contains this text, e.g. "county" or "chicago".

## `sections` (type: `array`):

Extra pages to fetch and fold into each row. Each one is a separate request and is charged separately. Crime rates already ship on every row for free, so there is no Crime & Safety option here. Real Estate and Reviews cover towns, neighborhoods and counties; Rankings everything except states; Residents everything.

## `proxyConfiguration` (type: `object`):

Niche is behind PerimeterX. The UNBLOCKER group clears it over plain HTTP; residential and datacenter exits get a captcha on every content path.

## Actor input object example

```json
{
  "maxItems": 10,
  "entityType": "towns",
  "sections": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

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

Key fields

## `fullData` (type: `string`):

Complete dataset with all 37 fields

# 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 = {
    "maxItems": 10,
    "entityType": "towns",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/niche-places-to-live-scraper").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 = {
    "maxItems": 10,
    "entityType": "towns",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/niche-places-to-live-scraper").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 '{
  "maxItems": 10,
  "entityType": "towns",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call parseforge/niche-places-to-live-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/niche-places-to-live-scraper"
        }
    }
}
```

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/FeBfAHdJuPpTVNGJG/builds/pnPpelDC7bjSc1MtV/openapi.json
