RequestBeam

Documentation

RequestBeam Docs

SimilarwebAPI endpoint reference

All 27 SimilarwebAPI GET endpoints with exact query names, types, limits, date windows, and response behavior.

All paths below are relative to your API origin. Every request requires Authorization: Bearer YOUR_API_KEY, uses GET, and has no request body. See authentication, billing, and errors.

Query Rules

The singular website fields key and Key require one ASCII domain such as amazon.com, up to 253 characters, without surrounding whitespace. Do not send a URL, IP address, domain list, or API credential in these fields. Use punycode for internationalized domains.

Query names are case-sensitive. Unknown fields, duplicate fields, CR/LF/NUL, and invalid values are rejected. Boolean values are literal true or false; zero is not interchangeable with false. Text is 1-2048 UTF-8 bytes after trimming. Encode spaces, JSON arrays, and separators with your HTTP client's query encoder.

from and to must occur together, be real calendar dates in YYYY-MM-DD or YYYY|MM|DD format, and satisfy from <= to. A comparison pair follows the same rule. Do not combine explicit dates with latest. Optional fields inherit endpoint defaults; the tables list allowed fields, not a requirement to send all of them.

Window-based routes normally default to 28 days ending three UTC days ago and accept latest=1d through 366d. Fixed-month routes have the defaults noted below. Engagement, visits, ranks, and channels additionally accept latest=1m|2m|3m|6m for previous complete UTC calendar months; these selectors require isWindow=false and default timeGranularity=Monthly. History has the narrower rules documented for its four endpoints.

Country 999 means worldwide; country 0 is preserved. Website identifiers are domains such as example.com, except the keyword-ranking endpoint where keys is a search keyword. Upstream data availability, filters, and matching types may vary.

Successful responses preserve native JSON rather than adopting a universal response schema. Incoming and outgoing referral tables use Records; historical metrics may use nested Data. The names and units described below do not imply every optional upstream field is always present.

Endpoints

Keyword suggestions

GET https://api.requestbeam.com/v1/similarweb/keywords/suggestions

Defaults: country 999, latest 28d, rowsPerPage 100, type Broad, websource Total, and windowVolume descending. Optional page is 1-based. rangeFilter uses native syntax, for example volume,100,10000|difficulty,0,40. Matching-type and filter availability depend on the data source.

Query fieldRequiredType and constraints
keywordYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
latestNostring; 1-2048 UTF-8 bytes after trimming
sortNostring; 1-2048 UTF-8 bytes after trimming
ascNoboolean string: true or false
pageNointeger string; 1-1000
rowsPerPageNointeger string; 1-1000
typeNostring; enum: Broad, Phrase, Exact, Related
websourceNostring; enum: Total, Desktop, MobileWeb
isWindowNoboolean string: true or false
rangeFilterNostring; 1-2048 UTF-8 bytes after trimming

GET https://api.requestbeam.com/v1/similarweb/websites/backlinks

Defaults: Page 1, PageSize 100, Status All, FollowType All, and DomainScore descending. Key is capitalized; do not use key or keys.

Query fieldRequiredType and constraints
KeyYesstring; 1-2048 UTF-8 bytes after trimming
PageNointeger string; 1-1000
PageSizeNointeger string; 1-1000
StatusNostring; enum: All, Active, New, Lost
FollowTypeNostring; enum: All, DoFollowOnly, NoFollowOnly, DoFollow, NoFollow
DomainScoreFromNointeger string; 0-100
DomainScoreToNointeger string; 0-100
sortNostring; 1-2048 UTF-8 bytes after trimming
ascNoboolean string: true or false

Website keywords

GET https://api.requestbeam.com/v1/similarweb/websites/keywords

Defaults: page 1, pageSize 100, sourceType all, and both branded flags false. pageFilterJson is one URL-encoded JSON array string; when omitted it targets keys as a domain. latest=1m selects the one-month overview mode with pageSize 5 and isWindow=false unless explicitly provided. Use sourceType=organic or paid with IncludeNoneBranded=true and IncludeBranded=false for non-branded keyword views.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
sortNostring; 1-2048 UTF-8 bytes after trimming
ascNoboolean string: true or false
isoNostring; 1-2048 UTF-8 bytes after trimming
isDailyNoboolean string: true or false
IncludeBrandedNoboolean string: true or false
IncludeNoneBrandedNoboolean string: true or false
pageNointeger string; 1-1000
pageSizeNointeger string; 1-1000
sourceTypeNostring; 1-2048 UTF-8 bytes after trimming
pageFilterJsonNostring containing a JSON array

Keyword ranking websites

GET https://api.requestbeam.com/v1/similarweb/keywords/websites

keys is a keyword, not a website domain. Defaults include selectedPageTab=Organic, sourceType=organic, Device=Total, and graphDuration=28d. Optional page and pageSize use 1-based/positive integers.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
sortNostring; 1-2048 UTF-8 bytes after trimming
ascNoboolean string: true or false
isoNostring; 1-2048 UTF-8 bytes after trimming
isDailyNoboolean string: true or false
tabNononnegative integer string
mtdNoboolean string: true or false
selectedPageTabNostring; enum: Organic, Paid
graphDurationNostring; 1-2048 UTF-8 bytes after trimming
graphTypeNointeger string; 1-1000
isDurationChangedNoboolean string: true or false
ignoreFilterConsistencyNoboolean string: true or false
DeviceNostring; 1-2048 UTF-8 bytes after trimming
sourceTypeNostring; 1-2048 UTF-8 bytes after trimming
pageNointeger string; 1-1000
pageSizeNointeger string; 1-1000

Traffic sources

GET https://api.requestbeam.com/v1/similarweb/websites/traffic-sources

Defaults: sourceType=Referral, page=1, orderBy=Share desc, and timeGranularity=Daily. This table is distinct from the incoming-referrals endpoint.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
sourceTypeNostring; 1-2048 UTF-8 bytes after trimming
ignoreFilterConsistencyNoboolean string: true or false
pageNointeger string; 1-1000
orderByNostring; 1-2048 UTF-8 bytes after trimming

Outgoing traffic

GET https://api.requestbeam.com/v1/similarweb/websites/outgoing-traffic

from and to are required. Singular key only. Defaults: country=999, isWWW=false, isWindow=false, webSource=Total, page=1, orderby=Share desc, orderBy=Share desc, sort=Share, asc=false. orderby and orderBy are distinct and forwarded independently; keep them consistent. No latest, pageSize, rowsPerPage, includeSubDomains, or timeGranularity. Rows are in Records; TotalCount is the upstream total, not the current page length.

Query fieldRequiredType and constraints
keyYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromYesstring; valid date using the formats above
toYesstring; valid date using the formats above
isWWWNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
orderbyNostring; 1-2048 UTF-8 bytes after trimming
orderByNostring; 1-2048 UTF-8 bytes after trimming
sortNostring; 1-2048 UTF-8 bytes after trimming
ascNoboolean string: true or false
pageNointeger string; 1-1000

Incoming referrals

GET https://api.requestbeam.com/v1/similarweb/websites/incoming-referrals

Singular key only. Defaults: country=999, latest=28d, isWWW=false, isWindow=true, isDaily=false, webSource=Total, selectedTab=incomingTraffic, orderBy=TotalShare desc, ignoreFilterConsistency=false, page=1. No keys, pageSize, rowsPerPage, includeSubDomains, or timeGranularity. Rows are in Records; native fields may include SiteOrigins and TotalShare.

Query fieldRequiredType and constraints
keyYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
isWWWNoboolean string: true or false
isoNostring; 1-2048 UTF-8 bytes after trimming
isWindowNoboolean string: true or false
isDailyNoboolean string: true or false
latestNostring; 1-2048 UTF-8 bytes after trimming
webSourceNostring; enum: Total, Desktop, MobileWeb
selectedTabNostring; enum: incomingTraffic
orderByNostring; 1-2048 UTF-8 bytes after trimming
ignoreFilterConsistencyNoboolean string: true or false
pageNointeger string; 1-1000

Branded keyword share

GET https://api.requestbeam.com/v1/similarweb/websites/branded-keywords

Defaults to the previous complete UTC month. duration is fixed to 1m.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
durationNostring; enum: 1m

Traffic geography

GET https://api.requestbeam.com/v1/similarweb/websites/geography

Defaults to the previous three complete UTC months, pageSize=5 and orderBy=TotalShare desc.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
pageSizeNointeger string; 1-1000
orderByNostring; 1-2048 UTF-8 bytes after trimming

Device distribution

GET https://api.requestbeam.com/v1/similarweb/websites/devices

Defaults to the previous three complete UTC months and ShouldGetVerifiedData=false.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
ShouldGetVerifiedDataNoboolean string: true or false

Search performance

GET https://api.requestbeam.com/v1/similarweb/websites/search-performance

Defaults to the previous complete UTC month, pageSize=5, duration=1m and SourceType=Organic. Use SourceType=Paid for paid keywords; do not substitute sourceType.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
pageSizeNointeger string; 1-1000
durationNostring; enum: 1m
SourceTypeNostring; enum: Organic, Paid

Social traffic

GET https://api.requestbeam.com/v1/similarweb/websites/social-traffic

Defaults to the previous three complete UTC months. webSource is not accepted.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Engagement overview

GET https://api.requestbeam.com/v1/similarweb/websites/engagement

Defaults include ShouldGetVerifiedData=false, includeLeaders=true and unBounced=false. Native Data rows may contain AvgMonthVisits, BounceRate, PagesPerVisit and AvgVisitDuration.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
ShouldGetVerifiedDataNoboolean string: true or false
includeLeadersNoboolean string: true or false
unBouncedNoboolean string: true or false
betaNoboolean string: true or false

Total visits

GET https://api.requestbeam.com/v1/similarweb/websites/visits

compareFrom and compareTo must be supplied together as valid ordered dates. timeGranularity is Monthly. Native fields may include TotalVisits, Change and ShareOfVisits; a rolling total is not necessarily a complete-calendar-month total.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
compareFromNostring; valid date using the formats above
compareToNostring; valid date using the formats above
ShouldGetVerifiedDataNoboolean string: true or false

Visits table

GET https://api.requestbeam.com/v1/similarweb/websites/visits/table

compareFrom and compareTo must be supplied together as valid ordered dates. timeGranularity is Monthly; rows are in Data, with Domain and TotalVisits. TotalCount can be 0 even when Data contains rows; inspect the array itself to determine whether results are present.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
compareFromNostring; valid date using the formats above
compareToNostring; valid date using the formats above
ShouldGetVerifiedDataNoboolean string: true or false

Visits trend

GET https://api.requestbeam.com/v1/similarweb/websites/visits/trend

Defaults to the rolling 28-day daily window. timeGranularity accepts Daily, Weekly or Monthly.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Weekly, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming
ShouldGetVerifiedDataNoboolean string: true or false

Website ranks

GET https://api.requestbeam.com/v1/similarweb/websites/ranks

timeGranularity is Monthly. Native response uses distinct GlobalRank, CountryRank and CategoryRank objects.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Country ranks

GET https://api.requestbeam.com/v1/similarweb/websites/ranks/country

timeGranularity is Monthly. This is the explicit country-rank table, not the combined ranks response. Rows are in Data, with Domain and Rank. TotalCount can be 0 even when rows are present; inspect Data directly.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Global ranks

GET https://api.requestbeam.com/v1/similarweb/websites/ranks/global

timeGranularity is Monthly. This returns the separate global-rank table. Rows are in Data, with Domain and Rank. TotalCount can be 0 even when rows are present; inspect Data directly.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Category ranks

GET https://api.requestbeam.com/v1/similarweb/websites/ranks/category

timeGranularity is Monthly. This returns the separate industry/category-rank table. Rows are in Data, with Domain and Rank. TotalCount can be 0 even when rows are present; inspect Data directly.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Traffic channels

GET https://api.requestbeam.com/v1/similarweb/websites/channels

Defaults to the rolling 28-day daily window. With webSource=Total, channel values are under Data.Total[domain], not directly under Data[domain]. Channel names are preserved, for example Search - Organic and Direct. Values are visit counts; derive shares only when their sum is positive.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Daily, Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Similar sites

GET https://api.requestbeam.com/v1/similarweb/websites/similar-sites

Defaults to the previous three complete UTC months. isWindow must be false, timeGranularity is Monthly, and orderBy is fixed to Affinity desc. No latest or webSource.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
timeGranularityNostring; enum: Monthly
orderByNostring; enum: Affinity desc

Similar site suggestions

GET https://api.requestbeam.com/v1/similarweb/websites/similar-sites/suggestions

Singular key; limit defaults to 20 and must be 1-20. country defaults to 999 and webSource to Total. The observed native response is an unwrapped array of candidates containing Domain, DomainWithoutSub, numeric Rank, and Favicon; do not expect a Data envelope. An empty array contains no suggestions.

Query fieldRequiredType and constraints
keyYesstring; 1-2048 UTF-8 bytes after trimming
limitNointeger string; 1-20
countryNononnegative integer string
webSourceNostring; enum: Total, Desktop, MobileWeb

Monthly visits history

GET https://api.requestbeam.com/v1/similarweb/websites/history/visits

Defaults to the previous six complete UTC months. Only country=999, isWindow=false and timeGranularity=Monthly are supported. latest accepts 1m through 6m; explicit dates must be complete months inside that rolling six-month window. Native series may appear under Data.<domain>.<source> with Key/Value points; source names, including MobileWeb or Mobile Web, are preserved. Values represent estimated visits.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Monthly bounce rate history

GET https://api.requestbeam.com/v1/similarweb/websites/history/bounce-rate

Defaults to the previous six complete UTC months. Only country=999, isWindow=false and timeGranularity=Monthly are supported. latest accepts 1m through 6m; explicit dates must be complete months inside that rolling six-month window. Native series may appear under Data.<domain>.<source> with Key/Value points; source names, including MobileWeb or Mobile Web, are preserved. Values represent bounce-rate fractions.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Monthly visit duration history

GET https://api.requestbeam.com/v1/similarweb/websites/history/visit-duration

Defaults to the previous six complete UTC months. Only country=999, isWindow=false and timeGranularity=Monthly are supported. latest accepts 1m through 6m; explicit dates must be complete months inside that rolling six-month window. Native series may appear under Data.<domain>.<source> with Key/Value points; source names, including MobileWeb or Mobile Web, are preserved. Values represent seconds per visit.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming

Monthly pages per visit history

GET https://api.requestbeam.com/v1/similarweb/websites/history/pages-per-visit

Defaults to the previous six complete UTC months. Only country=999, isWindow=false and timeGranularity=Monthly are supported. latest accepts 1m through 6m; explicit dates must be complete months inside that rolling six-month window. Native series may appear under Data.<domain>.<source> with Key/Value points; source names, including MobileWeb or Mobile Web, are preserved. Values represent pages per visit.

Query fieldRequiredType and constraints
keysYesstring; 1-2048 UTF-8 bytes after trimming
countryNononnegative integer string
fromNostring; valid date using the formats above
toNostring; valid date using the formats above
includeSubDomainsNoboolean string: true or false
isWindowNoboolean string: true or false
webSourceNostring; enum: Total, Desktop, MobileWeb
timeGranularityNostring; enum: Monthly
latestNostring; 1-2048 UTF-8 bytes after trimming