Carpathian Search
Overview
Carpathian Search is a web search engine operated by Carpathian. It runs its own crawler and index, and ranks by relevance first, then by page quality signals such as ad load, tracking and authorship.
Ranking
Each result is scored on text match against the page body, title and inbound anchor text. Quality signals adjust the order only among pages with comparable relevance. See Ranking for the full signal list.
Ads and tracking
Results contain no ads or sponsored placements. The search page loads no third-party resources and sets one first-party cookie to measure search quality, only with consent where the law asks for it. Privacy lists exactly what is recorded.
Index
Results come from Carpathian's own index, not a reseller feed. The index is built by CarpathianBot, which follows robots.txt and every opt-out listed under Opt out.
Reference
Ranking →
Carpathian Search
Ranking
Relevance carries the largest weight. The remaining signals reorder pages of similar relevance. The "Why here" link on each result shows the per-signal breakdown.
Signals
| Signal | Measures |
| Relevance | BM25F text match across body, title and inbound anchor text. Largest weight for every query type. |
| Proximity | Distance between query terms in the page text. |
| Page type | Match between the page type declared in structured data and the query intent: recipe, how-to, discussion, news, documentation. |
| First-hand | First-person accounts and discussion threads. |
| Integrity | Absence of affiliate listicles, generated filler, keyword stuffing and gambling spam. |
| Cleanliness | Absence of ad networks, popups, cookie walls, trackers and affiliate links. |
| Weight | Ratio of page text to scripts and markup. |
| Substance | Text length within a useful range. |
| Authorship | Author, date, feed, about page or personal domain. |
| Citations | Outbound links from body text, weighted toward reference sources. |
| Authority | Number and weight of distinct sites linking in. |
| Freshness | Age of the published date. Applied only to queries for recent content. |
Query intent
Each query is classified as navigational, question, recent, exploratory or informational, and the signal weights change with the class. Questions favor pages where the terms appear close together. Navigational queries put the named site's front page first.
Opinion queries
Queries containing terms such as best, vs, review or worth it raise the weight of first-hand and discussion pages and apply a stronger integrity penalty to affiliate content.
← OverviewSearch operators →
Carpathian Search
Search operators
Operators are typed directly into the query.
| Query | Returns |
cast iron care | Pages containing all terms. If too few match, pages containing most terms follow. |
"cast iron" | Exact phrase. |
skillet -nonstick | Pages without the term "nonstick". |
skillet site:example.com | Pages on example.com and its subdomains only. |
Matching ignores case, diacritics and simple plurals: Café Recipes matches cafe recipe. Misspelled terms are corrected automatically; the results page shows the correction and links to the uncorrected query.
← RankingPrivacy →
Carpathian Search
Privacy
Carpathian Search records what is searched, from where, on what kind of device, and how the results were used, to measure and improve search quality. No account is required.
Recorded
- Each search: the query text, its classified intent, the results page asked for, the results shown, the estimated number of results, any spelling correction, and the response time.
- Clicks on results: the position and address of the page clicked, the time from the results appearing to the first click, and how long you were away before returning to the results. Result links point directly at the destination; the search page reports the click separately.
- Searches that replaced another within five minutes, as pairs of queries.
- Location: country, region and city, looked up from your IP address on the server in a local GeoLite2 database. The address is then discarded.
- Device type (desktop, mobile or tablet), browser family and operating system family, read from your browser's user agent, which is then discarded. Your browser's language.
- How you reached the search page: the domain of the site that linked you (not the full address), direct, or the
utm_source campaign name in the address you arrived at.
- Visits: whether you are a new or returning visitor, and your session, a run of searches and clicks with no gap of 30 minutes, under a random session id.
- Per site: how often its pages appeared on the first page of results, at what position, for which queries, from which countries and device types, and how often they were clicked.
Not recorded
- IP addresses and user agent strings. They are read to work out the location and device above and never stored.
- The text of queries containing an email address, a phone or card number (seven or more digits), or a URL with parameters. Such a search increments a counter; its text and results are discarded.
- Searches by bots, crawlers and scripts. They are answered but not counted, and get no cookie.
The cookie
The site sets one first-party cookie, cs_vid. It holds a random identifier, nothing about you, so that a returning visit and a session can be recognized. It expires 30 days after your last search, and each search renews it. It is HttpOnly, Secure and SameSite=Lax: scripts cannot read it and other sites cannot use it. The site sets no other cookie and loads no third-party analytics, ad scripts, fonts or images.
In the European Economic Area, the United Kingdom and Switzerland, and wherever your location cannot be determined, the cookie is set only if you choose Accept on the search page. Choosing No thanks is remembered in your browser's local storage, which never leaves your device, and you are not asked again.
If your browser sends Global Privacy Control (Sec-GPC: 1), the cookie is never set, one already set is deleted, and you are not asked.
Without the cookie, your searches are grouped into sessions under a temporary id: a keyed hash of your IP address, an IPv6 address by its /64 network, and your browser family. The key is random, held in memory only, and replaced every day and at every restart, so the id cannot be reversed to an address or joined across days, and it is never written to disk.
You can delete the cookie at any time in your browser's settings, which also withdraws your consent; later searches are then not linked to earlier ones, and where consent is needed you will be asked again.
How it is kept
Daily totals of everything above are kept for 400 days and used to tune ranking. They are sent to Carpathian over TLS, signed by this server.
A log of each search, click and return, holding the cookie's identifier when it is set, the session id, the query, the location, device, browser, system and language fields above, and the results shown, is kept on the server for 90 days to improve ranking, then deleted. It is not part of what is sent to Carpathian, and only the operator of this server can read it.
Neither is sold or shared with advertisers.
What counts
Only searches and clicks sent by this site's own search page are counted. A search another website triggers in your browser is answered but not counted. Searches through the API are counted without device, visitor or session.
To limit how many searches one address can make, a keyed hash of the address picks a counter of recent searches held in memory. The counter holds a number and a time, not the address or the hash, and is never written to disk.
Trending searches lists only queries at least ten people searched that day, shows no counts, and excludes a maintained blocklist. People are told apart for this with the same daily keyed hash of the IP address.
Site owners
Owners who verify a site in Carpathian's Search Engine Console see, for that site, every query its pages appeared for, with impressions, clicks and average position, by page, by country and by device type. They do not see who searched.
Crawl requests
Submitted site or sitemap URLs and contact emails are stored to process and answer the request. Only the URL is passed to the crawler. The submitting IP address, an IPv6 address by its /64 network, is held in memory for one hour for rate limiting and is not written to disk. Requests sent from other websites are refused.
← Search operatorsTrending searches →
Carpathian Search
Trending searches
Queries rising today and most searched this week, from daily counts, each searched by at least ten people. Details
Rising today
No rising queries yet today.
Most searched this week
Not enough data yet this week.
← PrivacySubmit a sitemap →
Site owners
Submit a sitemap
CarpathianBot discovers pages through sitemaps declared in robots.txt, and through submissions on this page.
Declare it in robots.txt
Sitemap: https://example.com/sitemap.xml
If robots.txt has no Sitemap line, CarpathianBot requests /sitemap.xml.
Supported
- Sitemap files and sitemap indexes, plain or gzip.
- Up to 10 sitemap files and 50,000 URLs per read.
lastmod: pages modified since the last fetch are refetched sooner.
- Same-site URLs only. URLs on other sites are ignored.
- RSS and Atom feeds advertised by your pages.
Submit
Submit a sitemap URL or a site URL. It is queued within a minute. CarpathianBot fetches robots.txt first, then the front page, the submitted sitemap and any sitemaps robots.txt declares. The crawl budget for a site depends on inbound links, not on submission. Limits: 5 submissions per hour per IP address, one per site per day.
← Trending searchesCarpathianBot →
Site owners
CarpathianBot
CarpathianBot is the Carpathian Search crawler. It makes one request at a time per host and follows robots.txt.
User agent
CarpathianBot/0.1 (+https://search.carpathian.ai/bot)
Crawl behavior
- One concurrent request per host, at least 1.5 seconds apart, or the robots.txt
Crawl-delay if longer.
- Exponential backoff on errors, 429 and 5xx responses.
Retry-After is honored.
- robots.txt is parsed per RFC 9309 and cached for 24 hours. A
CarpathianBot group takes precedence over *.
- Refetch intervals adapt to how often each page changes. Requests are conditional, so unchanged pages return 304.
Block a path
User-agent: CarpathianBot
Disallow: /private/
Not done
- Form submission, login or JavaScript execution.
- Requests to private or reserved IP ranges.
- Fetching beyond robots.txt rules or crawl delay, including for submitted URLs.
← Submit a sitemapOpt out →
Site owners
Opt out
Opt-outs apply to search, to AI training, or to both.
Search
User-agent: CarpathianBot
Disallow: /
Pages with noindex in a robots meta tag or X-Robots-Tag header are fetched but not indexed. Pages that are removed, disallowed or marked noindex leave the index on their next fetch.
AI training
To stay in search but out of training datasets built from the crawl:
User-agent: Carpathian-AI
Disallow: /
Also treated as an opt-out: robots.txt rules blocking a named AI crawler, noai or noimageai in a robots tag, and the TDM-Reservation: 1 header.
← CarpathianBotSearch API →
Developers
Search API
JSON access to the same results as the search page. All requests require an API key.
Search
curl https://search.carpathian.ai/v1/search \
-H "Authorization: Bearer cs_..." \
-d '{"query": "sourdough starter", "limit": 10}'
Each result includes title, URL, site, snippet with highlight offsets, and published date. Set "explain": true to include the per-signal scores. GET /v1/search?q=... is equivalent.
Fetch a document
POST /v1/document {"url": "https://bread.example/starter"}
Returns the indexed text of a page. Only indexed pages are available.
Reference
Fields, errors and limits are documented at /llms.txt.
← Opt outArticles →
Articles
Ad and tracker penalties
Among pages of similar relevance, pages without ads, popups and trackers rank higher. This page lists what is detected.
Detected
- Ad network scripts and sponsored blocks.
- Popups and overlays covering the content.
- Cookie walls that block content until consent.
- Analytics and advertising trackers.
- Affiliate links, and listicles built around them.
Page weight
The weight signal compares the page's own text with the scripts and markup around it. A recipe page delivered as text ranks above the same recipe wrapped in a megabyte of scripts.
Limits
These signals never lift an irrelevant page above a relevant one. They only reorder pages of comparable relevance.
← Search APISitemap checklist →
Articles
Sitemap checklist
Ten checks so CarpathianBot finds the pages you want indexed, and only those.
- Declare the sitemap in robots.txt with a
Sitemap: line.
- Use absolute URLs with the final scheme and host, not ones that redirect.
- List only URLs that return 200.
- Exclude pages marked noindex.
- Use each page's declared canonical URL.
- Update
lastmod only when the content changes.
- Split large sites with a sitemap index, at most 50,000 URLs per file.
- Gzip is supported for large files.
- Advertise an RSS or Atom feed on pages that publish posts.
- Confirm robots.txt does not disallow the listed URLs.
← Ad and tracker penaltiesWhat gets indexed →
Articles
What gets indexed
What CarpathianBot extracts from a page and what it ignores.
Indexed
- HTML and plain-text responses up to 5 MB.
- Main text, title, published date, outbound links, and the page type from structured data.
- Anchor text of inbound links from other sites.
Ignored
- Pages marked noindex, and pages whose canonical URL points to another page on the same site.
- Duplicates: of pages with identical or near-identical text, one is indexed.
- Content rendered by JavaScript. Scripts are not executed.
- Links marked nofollow, sponsored or ugc, for discovery.
- URL spaces such as calendars and filter combinations, beyond a fixed number of URLs per pattern.
← Sitemap checklist