Our own free church finder

700,000+ churches. One free map.

Father's Many Mansions is WIIWID's own church finder. Search any city, zip code, address or church name across the United States, filter by denomination, and open a page for each church with directions and contact details. It runs on the ScriptureMate church database, behind a public API built to power Find a Church inside ScriptureMate too.

  • Free
  • No account
  • No ads or tracking

The website

For developers

Recreated in HTML from the site's own components, with a drawn map. The churches shown are examples.

01What visitors get

Open the map. Find your church.

The finder opens near you, lists the churches in view nearest first, and gives every church a page of its own. It works the same on a laptop or a phone.

Search the way you think

One box takes a city, a zip code, a street address or a church name. Church names are suggested as you type, nearest first; places are looked up when you press Search.

City · Zip · Address · Name

Use my location

One tap and the map fits the churches within about 25 miles of you. Before you share anything, it opens near the approximate area of your connection.

Used only to answer, never stored

Denomination filters

A row of chips for Baptist, Methodist, Catholic, Lutheran, Pentecostal, Presbyterian and ten more. Pick several at once; All clears them.

16 denominations · multi-select

A page for every church

Address, denomination, phone, website and email where the church lists them, with Get Directions, Open in Map and Share, plus the nearby churches and a mini map.

Directions · Call · Share

Browse by state and city

Every state and territory, its largest cities and an A–Z list of all of them, then a paged list of the churches in each city. A plain way in for people and for search engines.

State → city → church

Help keep it right

Suggest an update or report a duplicate from any listing. Every suggestion is reviewed before anything changes, and pastors can claim their church through ScriptureMate.

Reviewed before it changes
Private by design

Find a church. Nothing else.

The site asks for your location only to show what is near you, and the phone app asks only while it is open.

  • No accountNothing to sign up for, nothing to sign in to.
  • No ads or trackingNo ads, analytics or tracking tools, and no advertising identifiers.
  • Location stays yoursUsed to show the churches near you, never written to the database or kept as a history.
  • Two forms, that's allSuggestions and duplicate reports are the only things it saves in its database.
02One database, two apps

One API behind both front doors.

The finder is built on ScriptureMate's church database. Everything it shows comes through a public JSON API under /api/v1, and the same small, dependency-free client is built to drop into ScriptureMate's Find a Church, so both apps read the very same endpoints.

The data

The ScriptureMate church database

700,000+ churches across the 50 states, Washington, D.C., Puerto Rico and the U.S. Virgin Islands, in Postgres with PostGIS on Supabase, with the search functions and precomputed views the finder needs.

SupabasePostgres + PostGISPrecomputed clusters

The API

/api/v1, public JSON

Every answer is { data, meta }. Reads are open to any website (CORS), searches are rate limited per IP, and answers carry CDN cache headers; the two write endpoints only accept this site and ScriptureMate.

{ data, meta }Rate limitedCDN cached

Front door one

fathersmanymansions.com

The map finder, a page for every church, browse by state and city, and /embed: the finder without the site's chrome, for iframes and in-app use.

Front door two

ScriptureMate · Find a Church

The finder inside the ScriptureMate app is moving onto the same endpoints through the same client file, so a fix to the API will reach both at once.

The endpoints
  • GET/api/v1/churches/nearbyChurches within a radius of up to 50 miles, nearest first, with distance_miles
  • GET/api/v1/churches/viewportWhat the map shows: churches as points from zoom 10 in, or precomputed clusters
  • GET/api/v1/churches/searchChurch names by prefix, nearest first
  • GET/api/v1/churches/{id or slug}One church
  • POST/api/v1/churches/{id}/suggestionsSuggest an update, for the review queue
  • POST/api/v1/churches/{id}/duplicateReport a duplicate listing
  • GET/api/v1/denominationsThe denomination list, with counts
  • GET/api/v1/geocodePlaces: cities, zip codes and addresses
  • GET/api/v1/locateAn approximate location from the request's IP
  • GET/api/v1/healthDatabase, schema, data freshness and build, each ok, warn or fail
A request, and its answer
GET/api/v1/churches/nearby?lat=…&lng=…&radius=10
{
  "data": [
    {
      "id": "…",
      "slug": "grace-community-church-anytown-…",
      "name": "Grace Community Church",
      "address": "120 Main St",
      "city": "Anytown",
      "denomination": "Non-denominational",
      "phone": "…",
      "claimed": false,
      "distance_miles": 0.8
    },  …
  ],
  "meta": {
    "has_more": true,
    "radius_miles": 10,
    "center": { "lat": …, "lng": … },
    "limit": 50, "offset": 0
  }
}
The shape of a nearby search: the churches nearest first with their distance, and a meta block that says whether another page exists. Values marked … are left out here; the church is an example.
03Built to share

Gentle on a shared database.

The churches live in ScriptureMate's database, on a small instance that ScriptureMate itself runs on. So every query behind the API and the site's pages has a fixed ceiling on the rows it can touch, and the API caps what a request may ask for.

Zoomed out

Zoom 10 and closer

Zoomed out, the map draws precomputed cluster bubbles; from zoom 10 in, each church is its own gold marker. A drawn map, with made-up towns.
Widest search radius
50 mi
Churches per page, at most
100
Points in view before clusters
2,500
Form submissions per visitor
20/day

The API's own limits, from the code.

Every query has a ceiling

Counts stop at a cap, name search widens ring by ring through the name index, and filtered queries are planned for the filter's actual values, whatever the request asks for.

Neighbors share one answer

A nearby search's center is rounded to about 110 m and map boxes snap to a grid, so people looking at the same area send the same URL and share one cached response.

Limits at the door

Searches and lookups are rate limited per IP. The two forms take at most 10 a minute and 20 a day per visitor, 50 a day per listing and 1,000 a day in all, counted in Upstash Redis.

Writes only from home

Suggestions and duplicate reports must come from this site or ScriptureMate, which stops other websites posting through their visitors' browsers.

Busy, not broken

If a query runs out of time under load, the finder says “Lots of people are searching right now” and asks you to try again, instead of blaming your connection.

One health page

/api/v1/health checks the database, schema, data freshness and build, each ok, warn or fail, using Postgres's own statistics so it costs the database next to nothing.

Polite with OpenStreetMap

Place lookups go to Nominatim only when you press Search, never as you type, one request a second across the whole service, and cached.

Cleaner listings

Churches that came from two sources are merged pass by pass, every merge logged and reversible. Listings that aren't congregations, like trusts, camps and cemeteries, are set aside with a copy kept.

04The build

Designed and built by WIIWID.

A palette sampled from the logo: the navy pin, the teal accent and the gold arch. Bebas Neue for names and headings, Montserrat for reading, and square-shouldered buttons and chips that sit cleanly over a map.

The palette
  • Navy#173F63
  • Navy dark#12365A
  • Ink#14385C
  • Teal#3A8389
  • Gold#E8BE66
  • Gold dark#CFA24A
  • Muted#4B6478
  • Faint#8AA0B0
  • Line#DCE4EA
  • Paper#F4F7F9
The type
  • Find a church near youBebas Neue · Names & headings
  • City, zip, address, or church nameMontserrat · Reading
Little details
  • The name comes from John 14:2: “In my Father’s house are many mansions”
  • Every church page carries Church and breadcrumb structured data; a listing with no address, phone, website or email is kept out of search results
  • The map's position rides in the page address, so a bookmark opens in the same place
  • Search fields are 16px on phones, so an iPhone never zooms in when you tap one
  • A gold “Keep Us Fueled!” tip button in the footer, shown in web browsers and never in the app
  • One switch opens the doors: removing the preview password flips robots.txt, indexing and the sitemaps together
The Father's Many Mansions share card: the logo, the name in navy and teal, “Church finder geolocated” and fathersmanymansions.com
The share card every page uses, unless a church has a photo of its own.
His Mansionsunder the icon
The phone app

One site, also in your pocket.

The iPhone and Android apps are a Capacitor 8 shell around the live site, so every deploy reaches them without a store update. The native side brings the system location prompt, the share sheet, a launch screen, an offline screen, the status bar and Android's Back button; on a phone the results ride in a bottom sheet over the map.

Under the hood
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • Supabase · Postgres + PostGIS
  • Leaflet
  • CARTO basemaps
  • OpenStreetMap Nominatim
  • Upstash Redis
  • Zod
  • Vitest
  • Capacitor 8
  • Vercel
  • Bebas Neue & Montserrat

State pages are built ahead of time; each church page is rendered on its first visit and kept for a day. The map is Leaflet over CARTO's Voyager tiles, places come from OpenStreetMap's Nominatim, rate-limit counts live in Upstash, and everything is checked with Vitest and deployed on Vercel, with the bare domain sent to www.fathersmanymansions.com.

“In my Father's house are many mansions.” John 14:2

Find your church home.

Open the map, see ScriptureMate, whose church database it runs on, or tell us what you'd like built.