ParseForge Scrapers

Niche Places to Live Scraper

parseforge/niche-places-to-live-scraper

Real estateLead generation

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

Run this scraper See the API call
Total runs
46
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Niche Places to Live Scraper return?

ParseForge Banner

🏘️ 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:

{
  "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
}
{
  "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
}
{
  "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.
  2. Open the Niche Places to Live Scraper.
  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 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


πŸ’‘ Pro Tip: browse the complete ParseForge collection.

πŸ†˜ Need Help? Open our contact form 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.

What input does the Niche Places to Live Scraper accept?

FieldTypeWhat it doesDefault
startUrls 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. not set
maxItems 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. 10
entityType string (5 options) 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. towns
state string Two-letter state code, e.g. "in". Niche place slugs end in their state, so this filters discovery without extra requests. not set
nameContains string Keep only places whose URL slug contains this text, e.g. "county" or "chicago". not set
sections 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 object Niche is behind PerimeterX. The UNBLOCKER group clears it over plain HTTP; residential and datacenter exits get a captcha on every content path. {"useApifyProxy":true,"apifyProxyGroups"

How much does the Niche Places to Live Scraper cost?

from $0.20 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.0002 to $0.002
Place profile One place written to your dataset, whichever directory it came from: town, ZIP code, neighborhood, county or state. Carries the overall Niche grade, every category grade, population, median home value, rent and household income with national baselines, crime rates, age and rent-vs-own breakdowns, coordinates, census GEOID, rating, review count and the star histogram. $0.0072 to $0.012
Real estate section Charged once per profile when the real-estate section is requested. Costs its own request and adds 11 fields: home value distribution, year built, rent brackets and the owner-vs-renter split. Charged only when the page adds something the profile did not already carry. $0.0024 to $0.004
Residents section Charged once per profile when the residents section is requested. Costs its own request and adds 19 fields: education, employment, marital status, commute and detailed age and ethnicity breakdowns. Charged only when the page adds something new. $0.0024 to $0.004
Rankings section Charged once per profile when the rankings section is requested. Costs its own request and adds up to 31 entries: every Niche list the place appears on, with its position and the size of the list. Charged only when the page adds something new. $0.0024 to $0.004
Reviews section Charged once per profile when the reviews section is requested. Costs its own request and adds up to 17 resident reviews with star ratings, tags and text. Charged only when the page adds something new. $0.0024 to $0.004

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Niche Places to Live Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~niche-places-to-live-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "maxItems": 10,
    "entityType": "towns",
    "sections": [],
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": [
        "UNBLOCKER"
      ]
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

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

What do users say about the Niche Places to Live Scraper?

No reviews yet. Be the first.

How do I report an issue with the Niche Places to Live Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Niche Places to Live Scraper on Apify All scrapers