Skip to content

Migrate from the Legacy v1 API to SiteAtlas v2 ​

This guide is for users of the legacy Similarweb API Pro RapidAPI listing:

text
https://similarweb-api-pro.p.rapidapi.com

The current API is the DataBee SiteAtlas API. New integrations should use the direct gateway or the trademark-free SiteAtlas RapidAPI listing. The url query parameter remains the same, but endpoint paths, authentication context, response envelopes, and several field names have changed.

Migrate the listing as well as the response

Similarweb API Pro also exposes v2-style endpoints. Moving only from its v1 paths to its v2 paths is not the complete long-term migration. The Similarweb API Pro listing contains “Similarweb” in its name, and Similarweb has previously taken down API listings for trademark-related reasons. That creates availability risk for an integration that depends on the listing continuing to exist.

For long-term use, move to the trademark-free SiteAtlas listing and use the SiteAtlas v2 contract. The underlying v2 response contract is the same; the listing and host header change is separate from the response field changes described below.

What to migrate ​

There are two independent changes:

ChangeRequired action
v1 response → v2 responseUpdate endpoint paths and response parsing for the grouped, normalized v2 contract.
Similarweb API Pro listing → SiteAtlas listingChange the RapidAPI base URL and x-rapidapi-host to siteatlas.p.rapidapi.com to reduce listing-removal risk.

If you already use the Similarweb API Pro v2 endpoints, your response-parsing work may already be complete. You should still migrate the RapidAPI listing:

diff
- https://similarweb-api-pro.p.rapidapi.com/site-overview?url=microsoft.com
+ https://siteatlas.p.rapidapi.com/site-overview?url=microsoft.com
diff
- x-rapidapi-host: similarweb-api-pro.p.rapidapi.com
+ x-rapidapi-host: siteatlas.p.rapidapi.com

Keep your RapidAPI key unless RapidAPI asks you to change subscriptions or credentials. After switching, verify the HTTP status, response envelope, and one or two representative metric values in staging.

Migration at a glance ​

v1 legacy requestv2 requestMain response change
GET /website-overview?url=microsoft.comGET /site-overview?url=microsoft.comFlat/camelCase fields become grouped snake_case objects.
GET /similar-sites?url=x.comGET /site-similar?url=x.comsourceSite and similarSites become website and similar_sites; ranking, traffic, and image data are nested per site.
GET /country-metadataGET /country-metadataHyphenated ISO keys become normalized keys under a meta envelope.

The v2 endpoint names on RapidAPI omit the /siteatlas service prefix:

Access pathSite overviewSite similarCountry metadata
Direct gateway/siteatlas/site-overview/siteatlas/site-similar/siteatlas/country-metadata
SiteAtlas RapidAPI/site-overview/site-similar/country-metadata

1. Change the request ​

Create a key in the DataBee Developer Console, then use standard Bearer authentication:

bash
curl --request GET \
  --url 'https://api.databee.dev/siteatlas/site-overview?url=microsoft.com' \
  --header 'Authorization: Bearer YOUR_DATABEE_API_KEY'
bash
curl --request GET \
  --url 'https://api.databee.dev/siteatlas/site-similar?url=x.com' \
  --header 'Authorization: Bearer YOUR_DATABEE_API_KEY'

SiteAtlas RapidAPI listing ​

Keep using RapidAPI headers, but change the host and endpoint path:

bash
curl --request GET \
  --url 'https://siteatlas.p.rapidapi.com/site-overview?url=microsoft.com' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_DATABEE_API_KEY' \
  --header 'x-rapidapi-host: siteatlas.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
bash
curl --request GET \
  --url 'https://siteatlas.p.rapidapi.com/site-similar?url=x.com' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_DATABEE_API_KEY' \
  --header 'x-rapidapi-host: siteatlas.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'

Existing users can continue using the legacy RapidAPI listing while migrating. Do not start new work against similarweb-api-pro.p.rapidapi.com.

2. Migrate Website Overview ​

Endpoint ​

text
v1: GET https://similarweb-api-pro.p.rapidapi.com/website-overview?url=microsoft.com
v2: GET https://api.databee.dev/siteatlas/site-overview?url=microsoft.com

The v2 response uses status: "success" and groups related values under website, rankings, traffic, seo, and ai_referrals. The legacy success: true flag is not the v2 success indicator.

Field mapping ​

v1 field from website-overviewv2 fieldMigration note
successstatusConvert true to the string value "success".
sitemeta.request.url, website.domainThe requested domain is represented in request metadata and website details.
title, descriptionwebsite.title, website.descriptionSame values, now grouped under website.
categorywebsite.category.namev2 also provides website.category.slug.
snapshotDatemeta.snapshot_datev2 uses a normalized date value.
ranks.globalrankings.global.rankNested under rankings.
ranks.country.countryCoderankings.country.country_codeKey is normalized to snake_case.
ranks.country.rankrankings.country.rankSame value.
ranks.categoryRankrankings.category.rankv2 also provides rankings.category.category_slug.
engagementMetrics.bounceRatetraffic.engagement.bounce_rateKey is normalized to snake_case.
engagementMetrics.pageviewsPerVisittraffic.engagement.pages_per_visitKey and location change.
engagementMetrics.averageVisitDurationSecondstraffic.engagement.average_visit_duration_secondsKey and location change.
engagementMetrics.visitsLatest entry in traffic.historyUse the entry whose month matches the reporting period.
engagementMetrics.periodtraffic.periodv1 {month, year} becomes a YYYY-MM string.
estimatedMonthlyVisits[]traffic.history[]date becomes month; visits remains visits.
audience.topCountries[]traffic.geography_share[]countryCode becomes country_code; share remains a decimal.
traffic.sources[]traffic.sources_sharev1 array becomes a keyed object; use the v2 keys as the contract.
traffic.topKeywords[].nameseo.top_keywords[].keywordKey is renamed.
traffic.topKeywords[].volumeseo.top_keywords[].search_volumeKey is renamed.
traffic.topKeywords[].cpcseo.top_keywords[].cpc_usdKey is renamed and explicitly expressed in USD.
traffic.topKeywords[].estimatedMonthlyValueseo.top_keywords[].estimated_value_usdKey is renamed and explicitly expressed in USD.
technical.images.faviconwebsite.images.favicon_urlURL field is normalized and moved.
technical.images.smartphonewebsite.images.screenshot_mobile_urlURL field is normalized and moved.
technical.images.desktopwebsite.images.screenshot_desktop_urlURL field is normalized and moved.
technical.isSmallSitewebsite.flags.is_small_siteFlag is grouped under website.
technical.isDataFromGoogleAnalyticstraffic.is_data_from_gav2 exposes the data-source flag with the traffic data.
aiAnalytics.totalAiVisitsai_referrals.total_visitsKey and location change.
aiAnalytics.globalTrafficShareai_referrals.global_traffic_shareUse the decimal v2 field.
aiAnalytics.topPromptsai_referrals.top_promptsSame data, new namespace.
aiAnalytics.platforms[]ai_referrals.platforms[]name remains; v2 adds rank, uses share, and may include monthly history.

Arrays and units that need code changes ​

Traffic sources ​

The legacy response uses display labels in an array, for example Direct, Search, Paid Referrals, Referrals, Mail, and Social. v2 uses a keyed object such as:

json
{
  "direct": 0.5233,
  "organic_search": 0.2511,
  "paid_search": 0.0002,
  "organic_social": 0.0916,
  "paid_social": 0.0013,
  "email": 0.0116,
  "referrals": 0.0974,
  "generative_ai": 0.0208,
  "affiliate": 0,
  "display_ads": 0.0026
}

Read known v2 keys directly instead of iterating the old source/share array. Values are decimals: 0.0208 means 2.08%.

Monthly visits ​

The v1 percentageChange property is not part of the canonical v2 history item. Compute it in your application when needed:

js
const percentageChange = previousVisits
  ? ((currentVisits - previousVisits) / previousVisits) * 100
  : null;

Percent fields ​

The v1 payload often returned both share and sharePercentage. v2 removes these redundant pairs in the normalized sections. For traffic geography and traffic sources, v2 shares are decimals. For AI platform data, use the v2 share value as returned and do not automatically multiply it by 100 based on the v1 sharePercentage field.

3. Migrate Similar Sites ​

Endpoint ​

text
v1: GET https://similarweb-api-pro.p.rapidapi.com/similar-sites?url=x.com
v2: GET https://api.databee.dev/siteatlas/site-similar?url=x.com

Field mapping ​

v1 fieldv2 fieldMigration note
successstatusConvert true to "success".
sourceSitewebsiteThe v2 response uses the same website object shape as Site Overview.
sourceSite.sitemeta.website, website.domainsite is retained in metadata and normalized to domain under website.
sourceSite.titlewebsite.titleSame value.
sourceSite.descriptionwebsite.descriptionSame value, moved into website.
sourceSite.categorywebsite.categorySame value, moved into website.
sourceSite.tagswebsite.tagsSame concept, when returned.
sourceSite.imageswebsite.imagesFull source-site image object is retained under website.
sourceSite.totalVisitstraffic.total_visitsSource-site traffic is top-level v2 traffic data.
sourceSite.globalRankrankings.global.rankRanking data is top-level for the source website.
sourceSite.topCountry, sourceSite.topCountryRankrankings.country.country_code, rankings.country.rankv2 also returns rankings.country.country_name when available.
sourceSite.categoryRankrankings.category.rankv2 also returns rankings.category.category_slug, which may be null.
similarSitessimilar_sitesEnvelope key is normalized.
similarSites[].sitesimilar_sites[].domainsite becomes domain.
similarSites[].titlesimilar_sites[].titleSame value.
similarSites[].descriptionsimilar_sites[].descriptionSame value.
similarSites[].globalRank, categoryRank, topCountry, topCountryRanksimilar_sites[].rankingsRanking fields are grouped under each similar site's rankings; country rankings also include country_name.
similarSites[].totalVisitssimilar_sites[].traffic.total_visitsTraffic is grouped under each similar site's traffic object.
similarSites[].imagessimilar_sites[].imagesFull image data is retained per similar site.

The v2 response does not currently return source_site, meta.snapshot_date, meta.total_results, similar_sites[].rank, or similar_sites[].similarity_score. Do not build an integration around those fields. The response also retains description, rankings, traffic totals, and full image objects that are absent from the old documentation example.

The Site Similar response includes meta.website and meta.data_coverage. A global rank, description, or category slug can be null, and traffic.total_visits is a number that may include decimal precision.

Current v2 response shape ​

This is a representative shape; values and optional fields vary by domain:

json
{
  "status": "success",
  "meta": {
    "request": {
      "url": "github.com"
    },
    "website": "github.com",
    "data_coverage": "complete"
  },
  "website": {
    "domain": "github.com",
    "title": "GitHub · Build and ship software on a single, collaborative platform",
    "description": "Join the world's most widely adopted, AI-powered developer platform...",
    "category": {
      "slug": "Computers_Electronics_and_Technology/Programming_and_Developer_Software",
      "name": "Computers Electronics and Technology > Programming and Developer Software"
    },
    "tags": ["ruby", "ruby on rails", "github"],
    "images": {
      "favicon_url": "https://site-images.similarcdn.com/image?url=github.com&t=2",
      "screenshot_desktop_url": "https://site-images.similarcdn.com/image?url=github.com&t=1",
      "screenshot_mobile_url": "https://site-images.similarcdn.com/image?url=github.com&t=4"
    }
  },
  "rankings": {
    "global": { "rank": null },
    "country": {
      "country_code": "US",
      "country_name": "United States of America",
      "rank": 90
    },
    "category": {
      "category_slug": "Computers_Electronics_and_Technology/Programming_and_Developer_Software",
      "rank": 4
    }
  },
  "traffic": {
    "total_visits": 513197610.36
  },
  "similar_sites": [
    {
      "domain": "stackoverflow.com",
      "title": "Newest Questions",
      "description": "Stack Overflow | The World’s Largest Online Community for Developers",
      "rankings": {
        "global": { "rank": 978 },
        "country": {
          "country_code": "US",
          "country_name": "United States of America",
          "rank": 968
        },
        "category": { "category_slug": null, "rank": 39 }
      },
      "traffic": { "total_visits": 69124392.197 },
      "images": {
        "favicon_url": "https://site-images.similarcdn.com/image?url=stackoverflow.com&t=2&h=04179ebf8566da481b023bba12856a0748752b1e4a75d1b145220282ef93f21c",
        "screenshot_desktop_url": "https://site-images.similarcdn.com/image?url=stackoverflow.com&t=1&h=04179ebf8566da481b023bba12856a0748752b1e4a75d1b145220282ef93f21c",
        "screenshot_mobile_url": "https://site-images.similarcdn.com/image?url=stackoverflow.com&t=4&h=04179ebf8566da481b023bba12856a0748752b1e4a75d1b145220282ef93f21c"
      }
    }
  ]
}

4. Migrate Country Metadata ​

Endpoint ​

text
v1: GET https://similarweb-api-pro.p.rapidapi.com/country-metadata
v2: GET https://api.databee.dev/siteatlas/country-metadata

The supplied v1 response contains 249 countries and uses ISO-style keys with hyphens. The v2 response keeps the same country coverage but normalizes the envelope and field names:

json
{
  "status": "success",
  "meta": {
    "count": 249,
    "standard": "ISO 3166-1"
  },
  "countries": [
    {
      "name": "United States",
      "alpha2": "US",
      "alpha3": "USA",
      "numeric": "840"
    }
  ]
}
v1 fieldv2 fieldMigration note
successstatusConvert true to "success".
countries.lengthmeta.countv2 gives the count explicitly.
countries[].namecountries[].nameUnchanged.
countries[].alpha-2countries[].alpha2Hyphen removed.
countries[].alpha-3countries[].alpha3Hyphen removed.
countries[].country-codecountries[].numericName is normalized; value remains a string so leading zeroes are preserved.
countries[].iso_3166-2No canonical equivalentDo not rely on this field in v2.
countries[].region, sub-region, and related code fieldsNo canonical equivalentThese are not part of the canonical v2 country item.

If your application indexes countries by the old keys, update the lookup code:

js
// v1
const countryCode = country['alpha-2'];
const numericCode = country['country-code'];

// v2
const countryCode = country.alpha2;
const numericCode = country.numeric;

Keep numeric as a string. Converting values such as "004" to numbers removes the leading zero and breaks ISO code lookups.

  1. Add a response adapter that accepts the v1 shape and emits your application’s internal model.
  2. Switch requests to the v2 path and authentication/base URL in a staging environment.
  3. Update field access for the grouped snake_case response shown above.
  4. Add fixtures for missing, null, and empty arrays; not every domain has every metric.
  5. Compare v1 and v2 values using the returned snapshot/reporting dates. The two responses may represent different snapshots and should not be compared as real-time measurements.
  6. Remove the legacy adapter after all consumers use the v2 model.

See the Site Overview, Site Similar, Country Metadata, and full API reference for the current v2 request and response contracts.

DataBee SiteAtlas API — Turn any domain into traffic, SEO, and AI referral intelligence.