SimilarWeb Search API

POST

API health

24h health
Normal
24h average time
—
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Normal

Get a traffic overview for one domain from SimilarWeb, with global, country and category rank, estimated monthly visits, bounce rate, traffic sources and top countries. Pass a domain such as example.com, not a search term; figures are modeled estimates with a snapshot date, not the site's own analytics.

SimilarWeb Search reads the traffic overview of one website, given its domain in keyword: global, country and category rank, estimated monthly visits, bounce rate, pages per visit, average visit duration, the countries, search terms, referring sites and social networks that send traffic, the mix of traffic sources, the competitors SimilarWeb lists, and basic facts about the company behind the site. Marketers, investors and sales teams use it to size up a website, benchmark it against rivals and see where its visitors come from.

Despite the name, it does not search the web for a term: pass a domain such as example.com. The figures are SimilarWeb's model estimates, not the site's own analytics, so compare sites against each other rather than against your own numbers. A lower rank number is better, bounce_rate is a share where 0.6 means 60 percent, and avg_visit_duration is in seconds.

Price $1.39 per 1,000 requests ($0.001389 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.

AI prompt

Paste this into your AI assistant. It already holds this endpoint's parameters, response fields and an example request, so the assistant can ask what you need and then write the scraper.

Please help me write a data collection script with the EveryInfra SimilarWeb Search endpoint (similarweb/search).

Endpoint contract:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to similarweb and action to search, and put the parameters inside params.
- Required parameters:
  - keyword: Specifies the target domain to analyze (such as example.com) rather than a general search keyword query.
- Optional parameters:
  - limit: The most rows to return in this call, an integer of 1 or more. The default applies when you leave it out, and a call can return fewer rows.
- Returns a list of records. Main fields of each record: id, url, name, text, category, global_rank (Global traffic rank), country_rank (Traffic rank in its country), category_rank (Traffic rank within its category), country, monthly_visits, bounce_rate, pages_per_visit; 29 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=similarweb.
- Example request body:
{
  "platform": "similarweb",
  "action": "search",
  "params": {
    "keyword": "example.com"
  }
}
- Price: $1.39 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.

Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.

Request parameters

NameInTypeRequiredDefaultDescription
AuthorizationheaderstringYes-Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository.
platformbodystringYessimilarwebPlatform identifier, fixed value.
actionbodystringYessearchCapability identifier, fixed value.
keywordbody.paramsNot declaredYes-Specifies the target domain to analyze (such as example.com) rather than a general search keyword query. Depending on the action selected, this parameter retrieves traffic overviews for search, lists similar sites for competitors, or extracts domain visitor profiles for audience. Returned metrics are third-party estimations and do not reflect internal GA4 analytics measurements.
limitbody.paramsinteger (1–)No-The most rows to return in this call, an integer of 1 or more. The default applies when you leave it out, and a call can return fewer rows.

Code samples

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "similarweb",
  "action": "search",
  "params": {
    "keyword": "example.com"
  }
}'

[OpenAPI definition (JSON)]Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.

Response example

Real response

Captured September 26, 2026 at 08:56 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response with personal information (names, handles, avatars, profile links, contact details) removed. id, billing and quota differ on every call, so only their shape is shown.

json
{
  "id": "req_…",
  "platform": "similarweb",
  "action": "search",
  "results": [
    {
      "id": "example.com",
      "url": "https://www.similarweb.com/website/example.com",
      "name": "example.com",
      "text": "",
      "category": "computers_electronics_and_technology/programming_and_developer_software",
      "global_rank": 7941,
      "country_rank": 12471,
      "category_rank": 280,
      "monthly_visits": 9345666,
      "bounce_rate": 0.6514912791710534,
      "avg_visit_duration": "00:02:30",
      "top_countries": [
        {
          "countryAlpha2Code": "US",
          "countryAlpha2CodeRaw": "US",
          "countryUrlCode": "united-states",
          "visitsShare": 0.1329426107445016,
          "visitsShareChange": 0.23721803817648812
        },
        {
          "countryAlpha2Code": "GB",
          "countryAlpha2CodeRaw": "GB",
          "countryUrlCode": "united-kingdom",
          "visitsShare": 0.09609787381537664,
          "visitsShareChange": 0.748813150577166
        },
        {
          "countryAlpha2Code": "IN",
          "countryAlpha2CodeRaw": "IN",
          "countryUrlCode": "india",
          "visitsShare": 0.0812021419465102,
          "visitsShareChange": 0.2577621588969865
        }
      ],
      "top_keywords": [
        {
          "name": "www.example.com",
          "estimatedValue": null,
          "volume": null,
          "cpc": null
        },
        {
          "name": "example.com",
          "estimatedValue": null,
          "volume": null,
          "cpc": 0.71
        },
        {
          "name": "price comparison",
          "estimatedValue": null,
          "volume": null,
          "cpc": 1.64
        }
      ],
      "traffic_sources": [
        {
          "source": "ads",
          "rank": 1,
          "percentage": 0.464616847938312,
          "isHigher": null
        },
        {
          "source": "direct",
          "rank": 2,
          "percentage": null,
          "isHigher": null
        },
        {
          "source": "referrals",
          "rank": 3,
          "percentage": null,
          "isHigher": null
        }
      ],
      "top_referrals": [
        {
          "domain": "",
          "icon": "",
          "visitsShare": 0.23747686624030057,
          "isLocked": true,
          "isAvailable": true
        },
        {
          "domain": "",
          "icon": "",
          "visitsShare": 0.04233750061365961,
          "isLocked": true,
          "isAvailable": true
        },
        {
          "domain": "",
          "icon": "",
          "visitsShare": 0.03883400072797977,
          "isLocked": true,
          "isAvailable": true
        }
      ],
      "social_distribution": [
        {
          "name": "Reddit",
          "visitsShare": 0.3005705760443808,
          "icon": "https://site-images.similarcdn.com/image?url=reddit.com&t=2&s=1&h=66f2412047e0362ec60d5583d4b186511a8e859446bb112c60d22968facae906"
        },
        {
          "name": "Youtube",
          "visitsShare": 0.1996099164167749,
          "icon": "https://site-images.similarcdn.com/image?url=youtube.com&t=2&s=1&h=e117fb09ba0a34dee9830863bf927d29fc864e342583a36a667bf12346e88e20"
        },
        {
          "name": "Pinterest",
          "visitsShare": 0.12311561331673827,
          "icon": "https://site-images.similarcdn.com/image?url=pinterest.com&t=2&s=1&h=ec976160ca16242c6ab9ed7bc48e7b0f04c4100ceac5bcb6d3ea55450aa12210"
        }
      ],
      "competitors": [
        "simplilearn.com",
        "pennfoster.edu",
        "mygreatlearning.com"
      ],
      "snapshot_date": "2026-08-01T00:00:00+00:00",
      "platform": "similarweb"
    }
  ],
  "count": 1,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Response fields

Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.

FieldMeaning
idThe record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms.
urlLink to the record on the platform.
nameName of the object itself, for account, product and business capabilities.
textBody text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so).
categoryCategory name in the platform's own taxonomy, not normalized across platforms.
global_rankGlobal traffic rank; a smaller number ranks higher.
country_rankTraffic rank in its country.
category_rankTraffic rank within its category.
countryCountry or region: a full name or an ISO code depending on the platform, not normalized.
monthly_visitsKeeps the platform's own meaning
bounce_rateKeeps the platform's own meaning
pages_per_visitKeeps the platform's own meaning
avg_visit_durationKeeps the platform's own meaning
company_nameKeeps the platform's own meaning
company_foundedKeeps the platform's own meaning
company_employees_minKeeps the platform's own meaning
company_employees_maxKeeps the platform's own meaning
company_hq_countryKeeps the platform's own meaning
company_hq_cityKeeps the platform's own meaning
top_countriesKeeps the platform's own meaning
top_keywordsKeeps the platform's own meaning
traffic_sourcesKeeps the platform's own meaning
top_referralsKeeps the platform's own meaning
social_distributionKeeps the platform's own meaning
competitorsKeeps the platform's own meaning
snapshot_dateKeeps the platform's own meaning
emailContact email address, passed through as is.
emailsContact email addresses (a record can have several), passed through as is with duplicates removed.
phoneContact phone number, passed through without format normalization.
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).

FAQ

Why does keyword take a domain?

Because this capability analyzes one website instead of searching the web. Pass the site's domain, such as example.com. The same input works for the SimilarWeb Competitors and Audience capabilities, which return similar sites and the visitor profile of that website, so one domain list can drive all three.

What do category values like computers_electronics_and_technology mean?

category is the site's category in SimilarWeb's own taxonomy, so a value such as computers_electronics_and_technology is a SimilarWeb label, not a code shared with other platforms. category_rank is the site's traffic rank within that category, which makes it a fairer benchmark than global_rank for niche sites.

How current are the traffic figures?

Check snapshot_date: it is the date of the snapshot the figures come from, and traffic data lags behind, so do not read monthly_visits as a live count for the current month. When you track a site over time, store each result with its snapshot_date and compare snapshots rather than call dates.

Errors and billing

401
Missing or invalid key. Authentication runs before parameter checks, so unauthenticated requests never see the parameter schema.
422
Wrong parameter name or value. The error lists the parameters and allowed values this capability accepts and the closest match; it happens before any charge.
402
Insufficient balance. Top up first.
429
The account's per-minute request limit was reached (all of its API keys count together; a key's own lower limit applies first). Wait for Retry-After and try again; a rate package in the console raises the limit.
503
Could not complete right now. Any charge for the call goes back to your balance automatically, and the billing receipt in the response states the actual outcome, including when it is not yet known. Do not resend blindly.
200 empty
The request completed without data and is not charged (billing.reason = empty_result_refunded).

Official references

Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.

  • Similarweb: Visits, unique visitors, and engagement metrics ↗

    Similarweb distinguishes Monthly Visits from Monthly Unique Visitors and tracks duration, pages per visit, and bounce rate separately. Date, device, and subdomain filters are not accepted as parameters in this action, and monthly_visits cannot be used as a proxy for unique visitor counts.

    Checked 2026-09-04