christianpicks.com

search-christian-products

Installation

Adds this website's skill for your agents

 

Summary

Search and filter the ChristianPicks directory of 500+ Christian apps, software, businesses, ministries, books, and media by query, category, pricing model, platform, or popularity; surface product details, vendor links, and comparison-ready recommendations.

FIG. 01
FIG. 02
FIG. 03
FIG. 04
FIG. 05
FIG. 06
SKILL.md
369 lines

Search ChristianPicks for Apps, Software, Businesses, Ministries, Books & Media

Purpose

Search and filter the ChristianPicks directory — a curated catalog of 500+ Christian products, software, tools, businesses, ministries, books, and media — by free-text query, category, sub-category, pricing model, popularity, or tag. Returns product/business summaries (title, slug, logo, verified flag, favorite count) and, on product detail pages, the full record (description, pricing model, platforms, tags, categories, vendor website with utm_source=christianpicks.com). Read-only.

When to Use

  • A user asks for "the best Christian Bible app", "free Christian finance software", "Christian-owned coffee roasters", "open-source church management tools", etc.
  • A user wants to compare two or more Christian products on the same dimension (pricing model, platform, popularity).
  • A user wants to discover what categories of Christian software/businesses exist (Software and Apps, Digital Content, Education, Events, Music, Products, Support).
  • A user wants the official website of a known Christian product/ministry and you have only its name — the directory's outbound link is canonical and tracked.
  • A user wants trending tags or popular keywords across the Christian-tech ecosystem.

Do not use for general Bible-verse lookup, theological Q&A, or sermon search — those have purpose-built sites. ChristianPicks indexes tools and businesses, not content.

Workflow

ChristianPicks exposes one undocumented public JSON endpoint and one set of facet-aware GET URL params on its category listings. Prefer those over scripted browsing — they're ~5× faster, return structured JSON or parseable HTML, and need no session.

1. Fast multi-facet suggestion lookup (preferred for any text query)

GET https://christianpicks.com/api/search/suggestions?q={query}
Accept: application/json

Returns a single JSON envelope with six keyed result groups (top-6 / top-12 hits per group, server-ranked):

KeyContents
productsup to 6 matching products {title, slug, logo, favorite_count, is_verified}
businessesup to 6 matching Christian-owned businesses (same shape)
categoriesup to 7 product categories {name, slug, description, product_count}
business_categoriesup to 8 business categories {name, slug, description, business_count}
trending_tagsup to 12 tags {name, slug, product_count}
popular_keywordsup to 16 plain strings ("Bible Study", "Worship", "Prayer", …)

No CSRF, no cookies, no auth. Works from any HTTP client. Empty q returns the editorial default set (handy as a "what's hot" panel). Rate limit: 30 req/min per IP (the response echoes X-Ratelimit-Limit and X-Ratelimit-Remaining headers — respect them).

Construct deep links from the slugs:

Result groupURL
products[].slughttps://christianpicks.com/products/{slug}
businesses[].slughttps://christianpicks.com/christian-owned/{slug} (verify per record — some businesses route under /products/{slug})
categories[].slughttps://christianpicks.com/categories/{slug}
business_categories[].slughttps://christianpicks.com/christian-owned/category/{slug}
trending_tags[].slughttps://christianpicks.com/tags/{slug}

2. Faceted browse — pricing model + sort

Category listing pages accept GET query parameters; the server re-renders the page with the filter applied. No JS execution required, plain HTML out.

GET https://christianpicks.com/categories/{category-slug}
    ?revenue_model[]=Free            # repeat for multi-select
    &revenue_model[]=Freemium
    &revenue_model[]=Premium         # accepted values: Free | Freemium | Premium
    &categories[]={sub-category-slug} # e.g. open-source-bible-apps
    &sort=popular                    # popular | newest | name (A–Z)
    &q={text}                        # in-category text filter

Parse the rendered HTML by extracting /products/{slug} hrefs to enumerate result cards. Note the site uses URL-encoded %5B%5D in real navigation (revenue_model%5B%5D=Free); both forms work.

3. Product detail extraction

GET https://christianpicks.com/products/{slug}

Each product page embeds two parseable layers:

  • JSON-LD Product schema in a <script type="application/ld+json"> block — yields name, description, brand.name, url, image. Easiest structured grab.
  • Rendered DOM sections for the fields JSON-LD doesn't expose:
    • <h3>Pricing</h3><p> with comma-separated tier list ("Freemium, Paid, One-time", "Free, Open Source", etc.)
    • <h3>Platforms</h3> → list (iOS, Android, Web, Desktop, Faith-Based, …)
    • <h3>Categories</h3> and <h3>Tags</h3> → category/tag chips
    • "Visit Website" anchor → outbound URL with ?utm_source=christianpicks.com appended. Strip that param if you need the canonical vendor URL.
    • is_verified badge on title (matches the API's is_verified boolean).

4. Comparison & recommendation

To compare N products on the same axis:

  1. Hit /api/search/suggestions?q= once per candidate name to confirm slugs.
  2. Fetch each /products/{slug} in parallel.
  3. Extract description, pricing, platforms, tags, verified-flag, favorite_count.
  4. Rank by favorite_count (community signal) and/or pricing-tier match.

Browser fallback (only if the above fails)

If you specifically need the rich JS-rendered full-text results page (not the 6-per-group suggestions dropdown), the only viable path is a real browser session:

  1. Navigate to https://christianpicks.com/ (a remote Browserbase session with --proxies is fine — site is Cloudflare-fronted but the public pages are bare-friendly).
  2. Click the search affordance ("Search products, businesses…") in the navbar or press the ⌘K / Ctrl+K shortcut to open the command palette.
  3. Type the query into the palette <input> (accessibility role: textbox, placeholder "Search products, businesses…"). Results render inline grouped by Product Categories and SOFTWARE / DIGITAL CONTENT / etc.
  4. Click a result to navigate to its detail page; scrape as in step 3 above.

Do not navigate to https://christianpicks.com/api/search?q={query} as a top-level URL. That endpoint is only callable as an XHR from the loaded SPA with a valid CSRF cookie + Origin header — direct navigation (and direct curl) returns 403 Forbidden with the rendered "403 / Forbidden" error page. See Site-Specific Gotchas.

Site-Specific Gotchas

  • /api/search/suggestions is the JSON-out endpoint; /api/search is not. The endpoint named /api/search?q= looks like a JSON API in the URL space but is actually the SPA's internal partial-HTML fetcher and returns 403 Forbidden on direct GET (no Origin header / wrong CSRF). The truly public JSON sits at /api/search/suggestions. Don't waste cycles trying to coerce /api/search — it's confirmed CSRF-gated.
  • 30 req/min rate limit on /api/search/suggestions per IP. The response headers X-Ratelimit-Limit and X-Ratelimit-Remaining decrement on every call. On exhaustion expect 429. Cache aggressively if doing fan-out comparison queries.
  • revenue_model values are exactly Free, Freemium, Premium — three options. The site's own product cards display richer labels like "Paid", "One-time", "Subscription", "Open Source" in their Pricing text block, but those are not filterable values — they're free-form display strings. Filtering by "Paid" via revenue_model[]=Paid will return empty.
  • categories[] sub-filter values are slugs of the child categories of the parent category page you're on. On /categories/bible-apps the valid categories[] slugs are paid-bible-apps, freemium-bible-apps, free-bible-apps, open-source-bible-apps. You can't pass arbitrary top-level slugs.
  • Outbound vendor links are tracked. Every "Visit Website" button appends ?utm_source=christianpicks.com (and sometimes &utm_medium=...). Strip these params when reporting the canonical vendor URL to a user, unless you specifically want to honor the directory's referral attribution.
  • Cloudflare proxy + Laravel session cookies (XSRF-TOKEN, christianpicks_session) are set on every response but are only required for the CSRF-gated /api/search endpoint, the suggestion API, and category browsing both work cookieless. Don't add cookie handling unless you've actually been blocked.
  • /products/suggest is not a product — it's the "Suggest a product" form. Any regex like /products/([a-z0-9-]+) will harvest it as a false positive. Filter it out before treating slugs as a result set.
  • /search?q=... (no /api/ prefix) returns 404. The Schema.org SearchAction in the homepage JSON-LD advertises https://christianpicks.com/search?q={search_term_string} as the search target — it's misleading. Use the palette (browser) or the suggestions API (HTTP) instead.
  • Businesses vs. products are separate indexes. Christian-owned businesses live under /christian-owned/... with their own category tree (/christian-owned/category/{slug}) and their own count field (business_count). A search for "coffee" surfaces both product listings and business listings — distinguish them by which key they came from in the suggestions response.
  • Sort defaults to newest. If the user wants community-validated picks, append &sort=popular explicitly. name is alphabetical A→Z.

Expected Output

Shape 1 — suggestions (preferred fast path)

{
  "query": "worship",
  "source": "api/search/suggestions",
  "products": [
    {
      "title": "WorshipTools",
      "slug": "worshiptools",
      "url": "https://christianpicks.com/products/worshiptools",
      "logo": "https://images.christianpicks.com/logos/...png",
      "favorite_count": 4,
      "is_verified": true
    }
  ],
  "businesses": [
    {
      "title": "Mt. Athos Performance",
      "slug": "mt-athos-performance",
      "url": "https://christianpicks.com/christian-owned/mt-athos-performance",
      "logo": "https://images.christianpicks.com/logos/...png",
      "favorite_count": 0,
      "is_verified": false
    }
  ],
  "categories": [
    {
      "name": "Software and Apps",
      "slug": "software-and-apps",
      "url": "https://christianpicks.com/categories/software-and-apps",
      "description": "Essential desktop, web, and mobile applications for Bible study, prayer, worship, and church administration.",
      "product_count": 186
    }
  ],
  "business_categories": [
    {
      "name": "Media & Podcasting Services",
      "slug": "media-podcasting-services",
      "url": "https://christianpicks.com/christian-owned/category/media-podcasting-services",
      "description": "Media & Podcasting Services",
      "business_count": 5
    }
  ],
  "trending_tags": [
    { "name": "Worship", "slug": "worship", "url": "https://christianpicks.com/tags/worship", "product_count": 38 }
  ],
  "popular_keywords": ["Bible Study", "Worship", "Prayer", "Discipleship"],
  "rate_limit": { "limit": 30, "remaining": 28 }
}

Shape 2 — faceted category browse (pricing + sort)

{
  "category": { "name": "Bible Apps", "slug": "bible-apps", "url": "https://christianpicks.com/categories/bible-apps" },
  "filters_applied": {
    "revenue_model": ["Free", "Freemium"],
    "sort": "popular"
  },
  "results": [
    {
      "title": "YouVersion Bible",
      "slug": "youversion-bible",
      "url": "https://christianpicks.com/products/youversion-bible"
    },
    {
      "title": "NET Bible",
      "slug": "net-bible",
      "url": "https://christianpicks.com/products/net-bible"
    }
  ],
  "result_count": 8
}

Shape 3 — product detail (deep dive / comparison)

{
  "title": "Accordance Bible Software",
  "slug": "accordance-bible-software",
  "url": "https://christianpicks.com/products/accordance-bible-software",
  "description": "Accordance Bible Software is a leading platform for Bible study, offering a comprehensive suite of tools to facilitate deep scriptural insight...",
  "brand": "Independent",
  "image": "https://images.christianpicks.com/logos/1749519610-logo-...webp",
  "pricing_model_filter": "Premium",
  "pricing_display": "Freemium, Paid, One-time",
  "platforms": ["Web", "Desktop", "iOS", "Android"],
  "categories": ["Bible Study Software", "Software and Apps"],
  "tags": ["bible", "study", "software"],
  "vendor_url_canonical": "https://www.accordancebible.com",
  "vendor_url_tracked": "https://www.accordancebible.com?utm_source=christianpicks.com",
  "is_verified": false,
  "favorite_count": null
}

Shape 4 — comparison response (composed by the agent from N detail shapes)

{
  "query": "best free Christian Bible app for iOS",
  "ranked": [
    {
      "rank": 1,
      "title": "YouVersion Bible",
      "url": "https://christianpicks.com/products/youversion-bible",
      "vendor_url_canonical": "https://www.youversion.com",
      "pricing_display": "Free",
      "platforms": ["iOS", "Android", "Web"],
      "favorite_count": 12,
      "is_verified": true,
      "why": "Free across all platforms, highest community favorites, verified listing."
    },
    {
      "rank": 2,
      "title": "NET Bible",
      "url": "https://christianpicks.com/products/net-bible",
      "vendor_url_canonical": "https://netbible.com",
      "pricing_display": "Free",
      "platforms": ["Web", "iOS"],
      "favorite_count": 3,
      "is_verified": false,
      "why": "Free, ships translation notes; lower community signal than YouVersion."
    }
  ]
}

Shape 5 — no-hits

{
  "query": "byzantine icon embroidery kits",
  "source": "api/search/suggestions",
  "products": [],
  "businesses": [],
  "categories": [],
  "business_categories": [],
  "trending_tags": [],
  "popular_keywords": ["Bible Study", "Worship", "Prayer"]
}

Note: even on zero hits, popular_keywords still returns the editorial defaults — treat them as suggestions, not as positive matches. Decide "no result" based on products, businesses, categories, business_categories and trending_tags all being empty.

Search ChristianPicks Directory · browse.sh