Quick Start
Syften is configured as a set of filters. A filter is a search rule: the words, phrases, domains, authors, sites, and exclusions that decide whether an incoming post or comment is interesting. Add one filter per thing you want to watch, such as your product name, a competitor, a domain, or a buying-intent phrase. Syften checks new items from supported communities against those filters and sends matches to your configured destinations.
Start with simple filters and preview the matches. If a filter is too broad, make it more specific: restrict it to one community with site:, watch only posts or comments with type:, follow a specific account with author:, require a language with lang:, or use $accept: as an AI post-filter. After the matching rules are right, configure delivery. Tags let different filters send matches to different Slack channels, email addresses, RSS feeds, API clients, or webhooks.
Reference
Operator | Search for |
|---|---|
syften | the word "syften", "Syften" or "SYFTEN" (case insensitive) |
google apple | posts mentioning both of these keywords, in any order |
"my podcast" | the phrase "my podcast" |
example.com | mentions of this domain, its subdomains, and common obfuscated forms like example[.]com |
site:reddit.com/r/saas/ | posts on the /r/saas subreddit. Multiple site: operators can be used, and will be logically ORed |
plug* | "plugin", "plugins", "plug"... |
"good plug*" | same as above, but for phrases. The star can only be placed at the beginning or end of the entire phrase |
beer NOT root | the word "beer", but not if "root" is also mentioned |
title:domain title:name | posts with a title that includes both the words "domain" and "name" |
title:"domain name*" | posts with a title that includes the phrases "domain name", "domain names" etc |
type:post | posts, i.e. the items that create new threads |
type:comment | comments, i.e. replies to posts |
`fmt.Printf("hi!")` | this exact string, without ignoring special characters. These are backticks, not apostrophes |
author:user1 author:user2 | posts by user1 or user2. Best used together with site: |
replyto:someuser | replies to this user. Use in conjunction with site:. This doesn't work for all communities |
$tag:sometag | for use with multiple email addresses and Slack channels (legacy tag:sometag is also supported) |
lang:en | posts in English. See detailed explanation below |
// blah blah blah | a comment |
Literal text matching
By default, Syften uses fuzzy matching. For example, the filter "cat and" will match text like I bought a cat, and so... and I have a cat and a dog, but not I had a copycat and he.... That is because special characters are ignored and word boundary logic is applied.
The same applies to punctuation inside keywords. The filter a,b-c will match, among other things, the text A... b!c. This is what you would expect from a Google search.
However, Syften is not Google and does not need to instantly search through terabytes of data. We're only filtering once, through live data, delivering the matches and discarding the rest. This allows us some more CPU-heavy operations, like matching special characters. If you want to match special characters, as a text editor search would, surround your filter with backticks, like so: `a,b-c`.
The archive does not support the literal text matching operator.
Domain name matching
Domains are treated specially. A positive domain keyword like example.com or "example.com" will match things like example.com, www.example.com, and example[.]com, but not plain prose like example com or unrelated longer domains like someother-example.com.
Bare domains are usually the simplest choice, but the extra handling applies to positive quoted domains too. That extra handling does not apply to negated domains. A negated filter like NOT example.com behaves like an ordinary fuzzy negation, so it can also exclude things like example com or someother-example.com.
The site: operator
The site: operator performs a case-insensitive substring match on the URL of the matched item. Of course, the site must be one of the communities Syften supports.
It is usually best to end the site with a trailing slash. Otherwise the results might be surprising. For example, site:reddit.com/r/cat will also match URLs such as reddit.com/r/catapult. In this example, the proper syntax would be: site:reddit.com/r/cat/.
Multiple site: operators can be placed on one line, and they will be logically ORed together. For example, you can match several subreddits with:
site:reddit.com/r/saas/ site:reddit.com/r/startups/ site:reddit.com/r/EntrepreneurRideAlong/Language detection
For language detection, we use the whatlanggo library. We reject posts only if the detector marks the result as reliable (confidence greater than 0.8). If you specify lang:en, but the library stays below that confidence, we will still deliver it to you. This is because language detection is often inaccurate for short posts, and we don't want you to miss anything important.
Supported languages are: ar, bn, cs, da, de, el, en, es, fa, fi, fr, he, hi, hu, id, it, ja, ka, km, kn, ko, ml, my, nb, nl, nn, or, pa, pl, pt, ro, ru, si, sv, ta, te, th, tr, uk, vi, zh.
Examples
Get mentions about Mailchimp but avoid utm-tagged links
mailchimp NOT `?utm_source=mailchimp`Topics related to security on Hacker News
site:news.ycombinator.com type:post title:secur*It's OK to listen to common dictionary keywords as long as you narrow down the search to specialised communities
site:reddit.com/r/msp site:mspvendor.slack.com windowsQuestions about Wordpress themes, but not links to other themes
"wordpress theme*" `?` NOT `https://`Monitor a domain directly. Bare domains match the domain itself, subdomains, and common obfuscated forms, without matching ordinary prose that only happens to contain the same words
example.comHow I monitor my own tool (Syften is a dictionary word in Swedish)
syften NOT lang:svTags
$tag:customers is Syften metadata used for delivery routing. Tags are not searchable terms by themselves.
Use tags when you want to organize filters or route different matches to different email addresses and Slack channels. Multiple tags are allowed on the same filter, and tags are normalized to lowercase.
You can use tags to:
- send different results to different Slack channels
- send different results to different email addresses
- create separate RSS feeds for different groups of filters
- distinguish results in the API
Example: Reddit agency
// client a
filter1 $tag:clienta
filter2 $tag:clienta
// client b
filter3 $tag:clientb
filter4 $tag:clientbExample: Route by teams
You can create a separate Slack channel and send all posts made by teammates there, so that the rest of the team can quickly see them and upvote when appropriate.
// our company
ourcompany.com $tag:brand
// competitors
competitor1.com $tag:competitor
competitor2.com $tag:competitor
// upvotes
author:myself author:teammate1 author:teammate2 $tag:upvotesAI Filtering
After a filter matches an item, Syften can run an additional AI accept/reject check before notifications are sent.
AI filtering is available on the Standard and PRO plans.
AI filtering only applies to Slack and email notifications. The archive, API, and www views still show every match, but API responses include the AI verdict fields so you can consume them programmatically.
Use $accept:"..." inside a filter to define a per-filter accept rule. Keep the prompt simple and robotic, using the tried-and-tested format: "true if ...; false otherwise".
Use $brand:"..." as an optional brand hint for sentiment accuracy. For potentially confusing text like "I love X but hate Y", $brand:"X" makes it clear which brand sentiment should focus on.
Per filter, only one $accept:"..." and only one $brand:"..." is allowed. Using more than one of either is an error.
If a filter has no $accept:"...", no AI analysis is performed.
Example:
syften $accept:"true when the post mentions Syften (syften.com) the product, even briefly; false otherwise." $brand:"Syften"Caveat
Using "true only when the post is about Syften (syften.com) the product; false otherwise." will reject posts that mention Syften, but are not primarily about it.
Be robotically explicit and use this pattern instead: "true when the post mentions Syften (syften.com) the product, even briefly; false otherwise."
Variables
If you need to manage multiple filters, you can make your life easier with variables.
Variable names must start with an uppercase letter; the remaining characters may be letters, digits, or underscores.
For example:
SOMEVAR=site:reddit.com/r/startups/ site:news.ycombinator.com
SOMEOTHERVAR=author:user1 author:user2
filter1 ${SOMEVAR}
filter2 ${SOMEVAR}
filter3 ${SOMEVAR}
filter4 ${SOMEOTHERVAR}Is equivalent to:
filter1 site:reddit.com/r/startups/ site:news.ycombinator.com
filter2 site:reddit.com/r/startups/ site:news.ycombinator.com
filter3 site:reddit.com/r/startups/ site:news.ycombinator.com
filter4 author:user1 author:user2Site-Specific Syntax
Some communities have extra features and limitations. Technical details follow.
We scan the entire Reddit with all of its subreddits. For a product overview, see the Reddit monitoring page.
Use Cases
Monitor all of Reddit for a term
site:reddit.com acmeMonitor one subreddit
site:reddit.com/r/startups/ acmeMonitor a few subreddits
site:reddit.com/r/saas/ site:reddit.com/r/EntrepreneurRideAlong/ title:mrr type:postMonitor posts only and skip comments
site:reddit.com/r/saas/ type:postFind questions in post or thread titles
site:reddit.com/r/shopify/ title:plugin title:`?`Track a Reddit user across comments, posts, and promoted posts
site:reddit.com author:someuser123Implementation Details
- Alerts are fetched live
- Syften sees the content from the perspective of a logged-out user
- A comment's title is reconstructed from the slug in the URL and may be slightly different from the post's title
- Item edits are not tracked
- Reddit ads are just promoted posts, meaning that you can track ad campaigns
- The replyto: operator is not supported
Resources
The Stack Exchange family of sites
We scan the entire Stack Exchange family of sites. See the official Stack Exchange site directory for the current list.
Use Cases
Get notified when someone mentions docker on Server Fault
site:serverfault.com dockerGet notified when someone replies to you
site:stackexchange.com replyto:yourusernameImplementation Details
- Alerts are available with an up to 15-minute delay
- Only questions (type:post) have a title
- The replyto: operator is supported
- Syften sees the content from the perspective of a logged-out user
GitHub
Syften monitors GitHub issue comments, pull request review comments, and commit comments, but not repository code.
Use Cases
Limit alerts to comments in one repository's issues
site:github.com/owner/repo/issues/ exceptionLimit alerts to pull request review comments
site:github.com/owner/repo/pull/ regressionImplementation Details
- Syften scans GitHub every hour
- Syften monitors only these events: IssueCommentEvent, PullRequestReviewCommentEvent and CommitCommentEvent
- The replyto: operator is not supported
Indie Hackers
Indie Hackers is a website and community focusing on helping entrepreneurs become profitable while remaining independent.
Use Cases
Get notified when your friend posts something
site:indiehackers.com author:csallenGet notified about people working on Slack bots
site:indiehackers.com "slack bot"Get notified when someone does a Product Hunt launch
site:indiehackers.com type:post title:"product hunt"Get notified when someone replies to you
site:indiehackers.com replyto:yourusernameImplementation Details
- Alerts are fetched live
- Comments have reconstructed titles and are only matched with title:
- Item edits are not tracked
- The replyto: operator is supported
Blogs
We have an RSS backend pulling in some blog articles. See the full list of scanned news sites and blogs on the blog monitoring page.
Contact us if your favourite site is missing.
Implementation Details
- Syften uses RSS to fetch new items. Some sites don't share full articles through this channel, only previews
- Alerts are available with an up to 15-minute delay
Hacker News
news.ycombinator.com is a community-driven news site that allows users to submit links and create discussions. It focuses on startups and technology.
Use Cases
Get notified when a new official "Who is hiring?" thread gets created
site:ycombinator.com title:"Ask HN: Who is hiring?" author:whoishiringGet notified when a new remote Go job is posted
site:ycombinator.com title:"Ask HN: Who is hiring?" remote go
site:ycombinator.com title:"Ask HN: Who is hiring?" remote golangGet notified when someone from your team posts something
site:ycombinator.com author:user1 author:user2Get notified about new Show HN threads
site:ycombinator.com title:"show hn: " type:postGet notified when someone replies to you
site:ycombinator.com replyto:someuserImplementation Details
- Syften scans Hacker News using the official Hacker News API
- Syften sees the content from the perspective of a logged-out user, missing out on censored content
- Alerts are fetched live
- comments carry the story title, and are only matched with title:
- Item edits are not tracked
- The replyto: operator is supported
Resources
Dev.to
Use Cases
Get notified when your favourite author posts something
site:dev.to author:favourite_authorImplementation Details
- Alerts are fetched live
- The replyto: operator is not supported
Forums
We scrape an assorted selection of forums running on different backends. See the full list of scanned forums on the forum monitoring page.
Contact us if your favourite forum is missing.
Use Cases
Get notified about new Discourse paid jobs
site:meta.discourse.org title:`[paid-job]`Get notified when your favourite developer posts something
site:discourse.brew.sh author:favourite_authorImplementation Details
- Syften sees posts from the perspective of a logged-out user
- The replyto: operator is not supported
Resources
Newsletters and mailing lists
Syften monitors some tech-related newsletters. A list of all scanned mailing lists follows.
Contact us if your favourite mailing list is missing.
- Stefan from Daily AI Brief <stefan@dailyaibrief.com>
- Snacks <hello@snacks.robinhood.com>
- The Pragmatic Engineer <pragmaticengineer+deepdives@substack.com>
- observability news <o11y.news@buttondown.email>
- Lex Neva <lex@sreweekly.com>
- Project Overwatch <project-overwatch@mail.beehiiv.com>
- Sylvain | Growth Gems <growthgems@substack.com>
- Substack <no-reply@substack.com>
- Mohamed from DevOps Bulletin <devopsbulletin@substack.com>
- Marie Dollé from In Bed With Social <maried@substack.com>
- Observability 360 <observability-360@mail.beehiiv.com>
- The Pragmatic Engineer <pragmaticengineer+the-pulse@substack.com>
- Anne-Laure Le Cunff <annelaure@nesslabs.com>
- Justin Jackson <justin@megamaker.co>
- Analytics Engineering Roundup <analyticsengineeringroundup+the-analytics-engineering-podcast@substack.com>
- MentionMatch <hi@mentionmatch.com>
- Lenny's Newsletter <lenny@substack.com>
- Analytics Engineering Roundup <analyticsengineeringroundup@substack.com>
- Python Weekly <rahul@pythonweekly.com>
- The Team at Inside <announcements@inside.com>
- The Pragmatic Engineer <pragmaticengineer@substack.com>
- Lenny's Newsletter <lenny+how-i-ai@substack.com>
- Embrace Risk - the SREs newsletter <embracerisk@substack.com>
- Not Boring <notboring@substack.com>
- Technically <technically@substack.com>
- Product Hunt Daily <hello@digest.producthunt.com>
- Corey Haines | Swipe Files <corey@swipefiles.com>
- Ali Abouelatta (First1000) <first1000@substack.com>
Implementation Details
- Alerts are fetched live
- The replyto: operator is not supported
Podcasts
With the advent of powerful AI, we can now scan podcasts for mentions of your product.
If you'd like to receive episode summaries with excerpts as well, try Aurilix.
Use Cases
Limit a filter to podcast transcripts and descriptions
type:podcast syftenImplementation Details
- Due to the nature of AI-generated audio-to-text conversion, alerts about keywords in the podcast body can be inaccurate. This is especially true for non-dictionary startup names and domain names. Podcast descriptions are still accurate
- Alerts are available within 15 minutes of an episode being released, but this can vary with load
- Around 35,000 episodes are scanned each day
- Podcasts have the special type:podcast
- The replyto: operator is not supported
YouTube Pro
Monitoring YouTube is completely separate from the other communities. We use YouTube-style search syntax, shown below.
Operator | Look for... |
|---|---|
syften | mentions of Syften |
+keyword | YouTube search is designed to grab your attention, not to provide accurate results. Use the plus operator to make sure a keyword is really included |
-keyword | Exclude a keyword |
a OR b | Either of these two words. The precedence of this operator is counterintuitive for technical people, so use parentheses () liberally when using OR |
intitle: | Ask the search engine to prefer title matches. Syften still validates the word against the video title, description, and keywords |
description: | Ask the search engine to prefer description matches. Syften still validates the word against the video title, description, and keywords |
"the * seo" | Will match "the power of SEO" |
#seo | Hashtag search |
$tag:yourtag | this is a special Syften-specific operator used to tag your filters (legacy tag: is also supported) |
Implementation Details
- Results are checked at least once per day
- The precedence of the OR operator is counterintuitive for technical people, so use parentheses () liberally when using OR
- The completeness of our results is at the mercy of the YouTube attention-grabbing algorithm. If it deems a video not worthy of appearing in search results, we will miss it. We do not analyze the contents of the videos.
- The replyto: operator is not supported
Slack Communities
We monitor a wide variety of publicly available Slack communities.
The title of a Slack message is arbitrarily constructed, and contains some useful information for filtering. Here is an example:
message from john.travolta (U01A1RHH5B7) in techlondon.slack.com/#tech
See the full list of monitored Slack communities on the Slack monitoring page. Contact us if your favourite community is missing.
Use Cases
You can search for very broad terms if you limit your search to Slack communities only
site:slack.com funnelLimit search to just this one Slack community
site:techlondon.slack.com freelanceChannel tracking
title:`#marketing` "cold call"We put the channel name in what is normally the title for other backends.
Track users
site:techlondon.slack.com title:U57JWU42T
site:techlondon.slack.com author:reginaldUnfortunately we can't easily tell what the "Username" (e.g. reginald) of a Slack user is and the "Display Name" (e.g. Reginald Terris) is optional and can easily be changed.
So to make identifying users reliable we put the User ID (e.g. U57JWU42T) in the title field. Additionally, to make it convenient to view, we put the "Username" in the author field.
Track replies to your messages
site:techlondon.slack.com title:U57JWU42TTo track replies to your threads, track your own Slack user. Keep in mind that the User ID will be different in every Slack community, and the Username may be different as well.
Learn from the best
site:slack.com marketingexamples.com
site:slack.com saasmarketer.ioSee how the best do their marketing and learn from them. To avoid tracking their username across the different communities, you can just follow URLs to their websites.
Implementation Details
- Alerts are fetched live
- Since Slack messages have no title, we're constructing a faux one that looks like this:
message from someuser (U012ABCDEFG) in somecommunity.slack.com/#somechannel - Item edits are tracked
- Thread replies are tracked
- The replyto: operator is not supported
- It's inconvenient to track a user across multiple Slack communities, as their username may be different
- The channel ID is included in the URL, and can be filtered with site: site:somecommunity.slack.com/archives/C12345678/
Twitter/X Pro
Monitoring Twitter/X is completely separate from the other communities. We use the standard Twitter syntax, shown below.
Operator | Find Tweets... |
|---|---|
watching now | containing both "watching" and "now". This is the default operator |
happy hour | containing the exact phrase "happy hour" |
love OR hate | containing either "love" or "hate" (or both) |
beer -root | containing "beer" but not "root" |
#haiku | containing the hashtag "haiku" |
from:NASA | sent from Twitter account "NASA" |
nasa -@NASA | mentioning "nasa", but not the Twitter account "NASA" |
puppy -is:retweet | containing "puppy", filtering out retweets |
puppy -is:reply | containing "puppy", filtering out replies |
puppy -is:quote | containing "puppy", filtering out Quote Tweets |
is:verified | limit to verified accounts |
has:hashtagshas:linkshas:mentionshas:mediahas:images | self-explanatory |
lang:en | this parameter restricts Tweets to the given language |
$tag:yourtag | this is a special Syften-specific operator used to tag your filters (legacy tag: is also supported) |
Use Cases
Here is how I would search for relevant tweets in English about Syften that didn't come from me and didn't mention my Twitter/X handle ("syften" is a dictionary word in Swedish)
(@syften_com OR syften) -lang:sv -from:@syften_com
Implementation Details
- Alerts are available with an up to 15-minute delay
- Syften does not support these operators: min_replies, min_faves, min_retweets
- Syften does not support cashtags (e.g. $BTC)
- The replyto: operator is not supported
- The Twitter API and the Twitter web search define different OR binding precedence - the way the API behaves is counterintuitive. For this reason, if you use OR please use parentheses () liberally to explicitly show what you mean. Otherwise, you might receive unexpected results. a b OR c should become a (b OR c)
Resources
Bluesky
Bluesky is a Twitter alternative.
Implementation Details
- Alerts are fetched live
- Item edits are not tracked
- The replyto: operator is not supported
Mastodon
Mastodon is a Twitter alternative.
Implementation Details
- Alerts are fetched live
- Item edits are not tracked
- The replyto: operator is not supported
Product Hunt
producthunt.com is a product discovery and discussion website.
Use Cases
Get notified when someone comments on a product
site:producthunt.com title:yourproductImplementation Details
- Syften scans Product Hunt every five minutes
- The replyto: operator is not supported
Resources
Steemit
Syften scans Steemit using the official Steem API.
Implementation details
- Syften sees the content from the perspective of a logged-out user
- Alerts are available within 5 minutes
- Item edits are not tracked
- The replyto: operator is not supported
Lobste.rs
Syften scans Lobste.rs using its JSON and RSS endpoints.
Use Cases
Get notified when your favourite author posts something
site:lobste.rs author:favourite_authorImplementation Details
- Alerts are fetched live
- Syften sees the content from the perspective of a logged-out user
- The replyto: operator is not supported
Resources
API and Webhooks
Syften exposes a small JSON API for account settings, filters, and recent matches. Webhooks use the same match data structure and send new matches to your own endpoint as they arrive.
API token
You can copy or regenerate your API token in Setup → API and Zapier. Pass it in the Authorization header as a bearer token. There are sample curl scripts in the syften-examples repository.
Fetch your latest matches
curl https://syften.com/api/0.0/items/get \
-X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"limit": 20}'Endpoints
All API endpoints use POST. Requests with a body should use Content-Type: application/json. Successful responses return the requested JSON data directly.
Endpoint | Description |
|---|---|
| POST /api/0.0/items/get | Return recent matches. Optional JSON body: {"limit": 100}. The default limit is 100 and the maximum is 500 |
| POST /api/0.0/filters/get | Return your current filters as a JSON array of strings |
| POST /api/0.0/filters/set | Replace your current filters. JSON body: {"filters": ["syften", "example.com"]} |
| POST /api/0.0/settings/get | Return your account settings. The API token is redacted in this response |
| POST /api/0.0/info/get | Return account information, plan details, stats, and quota counters |
Replace all filters
curl https://syften.com/api/0.0/filters/set \
-X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filters": ["syften", "example.com NOT site:example.com"]}'Items returned by items/get include the matched filter, the match timestamp, and the original item fields:
{
"id": "match-id",
"matched_on": "2026-05-04T12:34:56Z",
"filter": "example.com",
"item": {
"backend": "reddit",
"backend_sub": "r/startups",
"type": "comment",
"icon_url": "https://example.com/icon.png",
"timestamp": "2026-05-04T12:34:56Z",
"item_url": "https://example.com/thread",
"author": "someuser",
"text": "The matched text",
"title": "Thread title",
"title_type": 1,
"lang": "en",
"analysis": {
"lang": "en",
"sentiment": "neutral",
"nsfw": false,
"accept": true,
"suggested_reply": "A short suggested reply, if available.",
"score": 8,
"excerpt": "The part of the item that matched the filter.",
"rejection_reason": ""
}
}
}Errors
Error responses use a JSON object with code and error. Common errors include a missing bearer token, an invalid token, an expired trial or subscription, an invalid endpoint, and malformed JSON.
{
"code": 400,
"error": "Authorization must be a Bearer type."
}Webhooks
Webhooks are available on the Syften Pro plan. Configure your webhook URL in Setup → API and Zapier. There is a small webhook receiver example in the syften-examples repository.
When new matches are found, Syften sends a POST request to your URL with Content-Type: application/json. The request body is a JSON array of item objects, using the inner item shape from items/get. Each webhook item includes the matching filter in its filter field.
[
{
"backend": "reddit",
"backend_sub": "r/startups",
"type": "comment",
"icon_url": "https://example.com/icon.png",
"timestamp": "2026-05-04T12:34:56Z",
"item_url": "https://example.com/thread",
"author": "someuser",
"text": "The matched text",
"title": "Thread title",
"title_type": 1,
"filter": "example.com",
"lang": "en",
"analysis": {
"lang": "en",
"sentiment": "neutral",
"nsfw": false,
"accept": true,
"suggested_reply": "A short suggested reply, if available.",
"score": 8,
"excerpt": "The part of the item that matched the filter.",
"rejection_reason": ""
}
}
]Return any 2xx status code to mark the webhook delivery as successful. Network errors and non-2xx responses are treated as failures.
Failed webhook deliveries are retried for up to 48 hours. Retries start with a minimum backoff of 5 minutes and can back off up to 12 hours between attempts. If the webhook URL is no longer valid, delivery is skipped instead of retried.
The API and webhook payload formats are intended for automation, but they are not version-locked. If you need a strict compatibility guarantee, contact us before relying on a field never changing.
Archive
Syften stores all of its processed items in an archive so you can search older items and test filters against them. The archive is meant to make filter development and iteration easier, especially when you want to sanity-check how a query behaves before relying on live results.
Not every source is included there. In particular, YouTube and Twitter/X results are not stored in the archive.
Technological limitations
The archive can search and retrieve information from very large datasets quickly because it relies on a data structure called an index. An index reorganizes the data to make queries fast, but that speed comes with a tradeoff: it does not preserve every detail of the original text, including punctuation such as dots, commas, and dashes. That is why search engines like Google often ignore punctuation as well.
When we return live results, we can afford to apply more computationally intensive processing. At that stage, we are able to take punctuation and other special characters into account much more precisely.
For example, Syften applies special handling for domains to ensure you get the results you actually mean. The filter example.com , when matching live results, would match:
- example.com
- www.example.com
But not:
- some-example.com
- example: com
The archive cannot see dots and similar punctuation precisely in the same way. So an archive search for website.so can still surface text like I built a website, so I launched it., even though that would not be treated as a real domain match in live results.