BuiltWith Scraper | Tech Stacks and Top Sites avatar

BuiltWith Scraper | Tech Stacks and Top Sites

Pricing

from $1.36 / 1,000 websites

Go to Apify Store
BuiltWith Scraper | Tech Stacks and Top Sites

BuiltWith Scraper | Tech Stacks and Top Sites

BuiltWith scraper for technology stacks and Top Sites rankings. Get every technology detected on any website with category, tags, rank and AI Index, or list the top sites of 40 countries with company name, tech spend, sales revenue and traffic. Build technographic lead lists, no API key needed.

Pricing

from $1.36 / 1,000 websites

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

BuiltWith Scraper

Turn BuiltWith into a table: the full technology stack of any list of websites, or the ranked Top Sites of a country with company name, tech spend and traffic, one row per website. 100 top sites with their companies in a few seconds, 361 technologies for shopify.com in one page.

How it works

How it works

  1. You type websites, or pick a country. Paste domains one per line (shopify.com, https://www.stripe.com/) to get their technology profiles. Leave the list empty and pick a country to walk BuiltWith's Top Sites ranking instead, all sites or online stores only.
  2. Each website is read once. A profile gives every technology BuiltWith detects on the site with its category, tags and description, plus the BuiltWith rank, the AI Index and the site age. A ranking page gives 100 sites with rank, company, country, monthly tech spend, sales revenue, social reach and traffic tier.
  3. One row comes back per website. 22 fields, the same shape in both modes, with 7 fields per technology. Ready for a CRM import, a spreadsheet, a warehouse or an AI pipeline.

โœจ Why teams choose this over other BuiltWith scrapers

Looking up prospects one by one on builtwith.com? Copying the Top Sites pages into a sheet by hand? Cleaning "Upgrade to Advanced" placeholders and text ranges like "1K to 5K" out of another scraper's output?

  • ๐Ÿงฉ Every technology, named and categorised. A profile row lists each technology BuiltWith shows on the public page (361 for shopify.com, in 26 categories) with its category, tags, description, link and icon. No placeholder rows, no nested trees: one flat list you can filter with a single expression.
  • ๐Ÿ† The Top Sites ranking as data. Pick one of 40 countries or the Global list, choose all sites or online stores only, and get the ranking 100 rows per page, up to 2,000 rows per list, with the company name on each row. The most used BuiltWith actors on the Store cannot read this list at all.
  • ๐Ÿ’ต Numbers you can sort. Tech spend, sales revenue, social reach and employees are integers in USD or units, never "1K to 5K". Dates are RFC 3339. Unknown values are null, never empty strings.
  • ๐Ÿข Company on every ranked site. Company name and a registration id such as an SEC CIK where BuiltWith has one, without an extra tab or a second actor.
  • ๐Ÿค– AI readiness and site age on every profile. The AI Index (0 to 100), the registration date and the date of the last technology detection sit on the row, next to the BuiltWith rank.
  • ๐Ÿ”€ Two jobs, one form. Profile the websites you name, or rank a market. Turn on one switch and every ranked site also carries its full technology stack.
  • ๐Ÿ”“ No account, no API key. Click Start on the prefilled form and the first 100 rows arrive in seconds.

๐ŸŽฏ What you can do with BuiltWith data

TeamWhat they build
Sales and SDRA prospect list enriched with the tools each website runs, to pitch the accounts on a competitor's stack or on a stack their product integrates with
Growth and marketingThe 2,000 biggest online stores of a country with revenue and spend estimates, as the seed of an outbound campaign
RevOps and dataA technographic column set in the CRM, refreshed monthly by a scheduled run over the account domains
Competitive intelligenceA monthly snapshot of competitors' stacks: which analytics, CRM, payment or CDN vendor they add or drop
Market researchAdoption of a technology among the top sites of ten countries, computed from the technologies column
Investors and analystsThe infrastructure and AI readiness of a target and its peers before a call
AgenciesA list of high-spend websites in a market that still run an outdated platform, for migration offers
Security and complianceThe third-party scripts, hosts and vendors present on a portfolio of company websites

๐Ÿ“ฅ Input parameters

Type websites, or pick a country. The form works as prefilled: the Top Sites of the United States, 100 rows.

ParameterTypeDefaultWhat it does
domainsarraynoneWebsites to profile, one per line. A domain (shopify.com) or a full address (https://www.stripe.com/) both work. When this list has at least one entry, the Top Sites options are ignored.
topSitesCountryselectUnited-StatesUsed when the list is empty: the Top Sites ranking to walk. Global or one of 40 countries.
maxItemsinteger100Rows to save. With websites, the first N of the list. With Top Sites, the ranking in order until N rows: 100 is one page, 2000 is a whole list.

๐Ÿ† Top sites

ParameterTypeDefaultWhat it does
ecommerceOnlybooleanfalseOnly the online stores of the ranking, each with its estimated monthly sales revenue.

๐Ÿ“„ Output

ParameterTypeDefaultWhat it does
includeTechnologiesbooleanfalseRead the technology profile of every ranked site: full technology list, categories, AI Index and site age on each row. Profiles are read about ten seconds apart, so 100 sites take around 20 minutes. Websites you name always include their technologies.

โš™๏ธ Advanced

ParameterTypeDefaultWhat it does
debugModebooleanfalseDetailed run log. Leave off.

๐Ÿ“Š Output data

One row per website. Both modes share the same 22 fields; a field the source does not give is null.

A ranked site (Top Sites mode):

{
"id": "vimeo.com",
"url": "https://builtwith.com/vimeo.com",
"domain": "vimeo.com",
"companyName": "Vimeo, Inc",
"companyId": "SEC CIK 1837686",
"technologies": null,
"technologiesCount": null,
"techCategories": null,
"rank": 1,
"techSpend": 10000,
"salesRevenue": null,
"socialFollowers": 200000,
"employees": null,
"traffic": "Very High",
"aiIndex": null,
"country": "United States",
"firstRegisteredAt": null,
"lastDetectedAt": null,
"faviconUrl": "https://x.cdnpi.pe/serve/KVuyZOOMz70Ak8bG/vimeo.com",
"dataType": "topSite",
"isLiveLookup": false,
"scrapedAt": "2026-09-20T09:12:41Z"
}

A technology profile (website list mode, technologies shortened):

{
"id": "shopify.com",
"url": "https://builtwith.com/shopify.com",
"domain": "shopify.com",
"companyName": null,
"companyId": null,
"technologies": [
{
"name": "Hubspot",
"category": "Analytics and Tracking",
"tags": ["CRM", "Marketing Automation", "Lead Generation", "Inbound Marketing", "Sales Enablement", "Content Marketing", "Email Marketing"],
"description": "Hubspot provides marketing information and leads via inbounding marketing software.",
"link": "https://trends.builtwith.com/analytics/Hubspot",
"iconUrl": "https://x.cdnpi.pe/serve/CmBSWOMPjh6lEXhc-b4d87b2c/hubspot.com",
"isSubTechnology": false
},
{
"name": "Google Universal Analytics",
"category": "Analytics and Tracking",
"tags": null,
"description": "The analytics.js JavaScript snippet is a new way to measure how users interact with your website.",
"link": "https://trends.builtwith.com/analytics/Google-Universal-Analytics",
"iconUrl": "https://x.cdnpi.pe/serve/UPASDUCKmLywn7PY-caac43be/google.com",
"isSubTechnology": true
}
],
"technologiesCount": 361,
"techCategories": ["Analytics and Tracking", "Widgets", "Language", "eCommerce", "Frameworks", "Content Delivery Network", "Mobile", "Payment"],
"rank": 999900,
"techSpend": null,
"salesRevenue": null,
"socialFollowers": null,
"employees": null,
"traffic": null,
"aiIndex": 100,
"country": null,
"firstRegisteredAt": "2005-03-11T00:00:00Z",
"lastDetectedAt": "2026-09-19T00:00:00Z",
"faviconUrl": null,
"dataType": "profile",
"isLiveLookup": false,
"scrapedAt": "2026-09-20T09:12:44Z"
}

With includeTechnologies on, a ranked site carries both halves: the ranking columns and the technologies list.

๐Ÿ—‚๏ธ Data fields

22 fields per row. technologies holds 7 fields per entry.

GroupFieldTypeDescription
IdentityidstringThe domain, stable across runs
IdentityurlstringThe BuiltWith profile page, permanent
IdentitydomainstringRoot domain as BuiltWith keys it
IdentitycompanyNamestring or nullCompany behind the site (Top Sites rows)
IdentitycompanyIdstring or nullRegistration id BuiltWith links, such as SEC CIK 1837686
Contenttechnologiesarray or nullOne entry per detected technology, see below
ContenttechnologiesCountinteger or nullNumber of technologies on the profile
ContenttechCategoriesarray or nullDistinct categories, in page order
Measuresrankinteger or nullPosition in BuiltWith Top Sites
MeasurestechSpendinteger or nullEstimated monthly technology spend, USD, lower bound
MeasuressalesRevenueinteger or nullEstimated monthly sales revenue, USD, online stores only
MeasuressocialFollowersinteger or nullCombined social media followers, lower bound
Measuresemployeesinteger or nullApproximate employee count when BuiltWith shows one
Measurestrafficstring or nullTraffic tier: Very High, High, Medium, Low
MeasuresaiIndexinteger or nullBuiltWith AI Index, 0 to 100
Place and timecountrystring or nullCountry of the site
Place and timefirstRegisteredAtstring or nullDomain registration date, RFC 3339
Place and timelastDetectedAtstring or nullDate of the last technology detection, RFC 3339
MediafaviconUrlstring or nullSite icon served by BuiltWith
MetadataTypestringprofile or topSite
MetaisLiveLookupbooleanTrue when BuiltWith had no cached profile and scanned the site on the spot: a shorter technology list, no rank, AI Index or dates
MetascrapedAtstringWhen the row was read, RFC 3339 UTC

Each entry of technologies:

FieldTypeDescription
namestringTechnology name as BuiltWith spells it
categorystringBuiltWith category card: Analytics and Tracking, Widgets, eCommerce, Frameworks, Payment, Web Hosting Providers, ...
tagsarray or nullSub-category badges, hidden "show more" ones included
descriptionstring or nullBuiltWith's one-line description
linkstring or nullTrends page of the technology
iconUrlstring or nullTechnology icon
isSubTechnologybooleanTrue when BuiltWith indents it under the previous entry

url and link are permanent addresses. iconUrl and faviconUrl are served by BuiltWith's image CDN and have stayed valid for months in our tests.

๐Ÿš€ Examples

Rank the top 100 sites of the United States

The prefilled form. One ranking page, company names included.

{
"topSitesCountry": "United-States",
"maxItems": 100
}

Get the technology stack of your prospects

One row per domain with every technology, the rank, the AI Index and the site age.

{
"domains": ["shopify.com", "stripe.com", "airbnb.com", "notion.so", "figma.com"],
"maxItems": 5
}

List the 500 biggest online stores of France with their revenue

Five ranking pages, salesRevenue filled on every row.

{
"topSitesCountry": "France",
"ecommerceOnly": true,
"maxItems": 500
}

Build a technographic dataset of Germany's top 200 sites

Every ranked site with its full technology list. About 200 profile pages, read ten seconds apart: allow 40 minutes.

{
"topSitesCountry": "Germany",
"includeTechnologies": true,
"maxItems": 200
}

Export a whole country list

The complete ranking of a list, 2,000 rows.

{
"topSitesCountry": "United-Kingdom",
"maxItems": 2000
}

Find which of your accounts run HubSpot

Profile the account domains, then filter the technologies column on name in your sheet or notebook.

{
"domains": ["https://www.zendesk.com/", "https://www.atlassian.com/", "https://www.gitlab.com/", "https://www.hashicorp.com/"],
"maxItems": 50
}

๐Ÿค– Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the BuiltWith Scraper on Apify: silentflow/builtwith-scraper
Two modes, one row per website in both:
- Website list: set "domains" (array of strings, domains or URLs). Each row is the technology profile of one domain.
- Top Sites: leave "domains" empty and set "topSitesCountry" (string enum: Global, United-States, United-Kingdom, Canada, Australia, New-Zealand, Germany, France, Netherlands, Italy, Spain, Mexico, India, Japan, Switzerland, China, Russia, Sweden, Norway, Brazil, Indonesia, Turkey, Saudi-Arabia, Argentina, Poland, Belgium, Thailand, Austria, Israel, Hong-Kong, Denmark, Singapore, Malaysia, South-Korea, Philippines, Pakistan, Chile, Finland, Vietnam, Czech-Republic, Romania). Each row is one ranked site.
Input schema:
- domains (array of strings, optional): websites to profile; wins over Top Sites when non-empty
- topSitesCountry (string, default "United-States"): ranking to walk when domains is empty
- maxItems (integer, default 100): rows to save; a Top Sites list holds up to 2000 rows
- ecommerceOnly (boolean, default false): Top Sites, online stores only, adds salesRevenue
- includeTechnologies (boolean, default false): Top Sites, also read each site's profile (technologies, aiIndex, dates)
- debugMode (boolean, default false)
Output per row (22 fields): id (string, the domain), url (string), domain (string), companyName (string|null), companyId (string|null), technologies (array|null of {name, category, tags (array|null), description, link, iconUrl, isSubTechnology}), technologiesCount (integer|null), techCategories (array|null), rank (integer|null), techSpend (integer|null, USD per month), salesRevenue (integer|null, USD per month), socialFollowers (integer|null), employees (integer|null), traffic (string|null), aiIndex (integer|null), country (string|null), firstRegisteredAt (RFC 3339|null), lastDetectedAt (RFC 3339|null), faviconUrl (string|null), dataType ("profile"|"topSite"), scrapedAt (RFC 3339).
Output per row also has isLiveLookup (boolean): true when BuiltWith scanned the site live instead of serving its cached profile. Profile rows carry technologies, rank, aiIndex and dates; Top Sites rows carry company, spend, revenue, social, traffic and country. Profiles are read about 10 seconds apart. No account or API key needed. Use apify-client for Python or JavaScript.

๐Ÿ’ป Integrations

Enrich a CRM account list with technographics (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
accounts = ["zendesk.com", "atlassian.com", "gitlab.com", "hashicorp.com"]
run = client.actor("silentflow/builtwith-scraper").call(run_input={
"domains": accounts,
"maxItems": len(accounts),
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
names = {t["name"] for t in row["technologies"] or []}
crm = sorted(n for n in names if n in {"Hubspot", "Salesforce", "Zoho CRM", "Pipedrive"})
print(row["domain"], row["technologiesCount"], "technologies, CRM:", ", ".join(crm) or "none")

Build a lead list of high-spend online stores (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('silentflow/builtwith-scraper').call({
topSitesCountry: 'France',
ecommerceOnly: true,
maxItems: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const leads = items
.filter((s) => (s.salesRevenue ?? 0) >= 1000000 && s.companyName)
.map((s) => ({ rank: s.rank, domain: s.domain, company: s.companyName, revenue: s.salesRevenue, traffic: s.traffic }));
console.table(leads.slice(0, 20));

Measure a technology's share of a market (Python, CSV out)

import csv
from collections import Counter
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("silentflow/builtwith-scraper").call(run_input={
"topSitesCountry": "Germany",
"includeTechnologies": True,
"maxItems": 200,
})
share = Counter()
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
for row in rows:
for tech in row["technologies"] or []:
if tech["category"] == "Content Management System":
share[tech["name"]] += 1
with open("cms-share-germany.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["cms", "sites", "share"])
for name, n in share.most_common():
writer.writerow([name, n, round(n / len(rows), 3)])

Refresh a technographic sheet every month (Apify CLI)

$apify call silentflow/builtwith-scraper --input '{"domains": ["shopify.com", "stripe.com"], "maxItems": 2}'

Schedule the same input from the Apify Console and connect the Google Sheets integration to the run's dataset.

๐Ÿ“ˆ Performance

Measured on 20 September 2026 on the live site.

RunRowsTime
Top Sites, United States, 100 rows (the default input)100about 10 seconds
Top Sites, France, online stores only, 200 rows200about 20 seconds
5 website profiles5about 2 minutes
Top Sites with technologies, 25 rows25about 5 minutes
MetricValue
Fields per row22, plus 7 per technology
Sites per ranking page100
Technologies on a large profileseveral hundred (361 for shopify.com)
Depth of a Top Sites list20 pages, 2,000 rows
Limit per runno fixed limit: maxItems is yours to set

๐Ÿ’พ Data export

Every run stores its rows in a dataset you can download as JSON, CSV, Excel, XML or HTML from the Storage tab, or pull from the API:

https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN

The dataset has two ready-made table views: Websites (website, company, country, rank, tech spend, social reach, traffic, technologies, profile link) and Technology profiles (website, technologies count, categories, AI Index, rank, registered, last detection, profile link). Schedules, webhooks and the Apify integrations (Google Sheets, Slack, Zapier, Make, n8n) work on top of the same dataset. In CSV and Excel the technologies list is flattened into columns; keep JSON when you need the nested list as is.

๐Ÿ’ก Tips for best results

  1. Use root domains. BuiltWith keys profiles on the registrable domain: shopify.com, not help.shopify.com. Full addresses are reduced to the domain for you.
  2. Start from the ranking, then profile. Walk a country list first, pick the rows you care about, and run a second job with those domains. It is faster than turning includeTechnologies on for a whole list.
  3. Filter on techCategories before technologies. The category list is short and tells you in one look whether a site has an eCommerce platform, a CRM or a payment provider.
  4. Read technologiesCount to judge a profile. A site with fewer than ten technologies is often a parked or redirecting domain.
  5. Keep maxItems a multiple of 100 for Top Sites. Each page is 100 rows; asking for 250 reads three pages and keeps 250.
  6. Schedule monthly, not daily. BuiltWith's rankings and profiles move slowly; a monthly run catches vendor changes without re-reading the same rows.
  7. Give profile runs time. Profiles are read about ten seconds apart on purpose, and a profile BuiltWith is still preparing is asked again half a minute later. A list of 100 domains is a 20-minute run, not a 20-second one.

โ“ FAQ

What exactly does the scraper read? BuiltWith's public Technology Profile page of a domain (every technology listed, rank, AI Index, site age) and the public Top Sites ranking pages (rank, company, country, spend, revenue, social reach, employees, traffic).

Do I need a BuiltWith account or API key? No. Both pages are public. Nothing to sign up for and nothing to paste.

Is the technology list complete? It contains every technology BuiltWith names on the public profile, with the count on the row. First and last detection dates per technology, and technologies removed over time, sit behind BuiltWith's paid plans and are not part of the output.

What does rank mean? The position in BuiltWith Top Sites, a ranking BuiltWith computes from site age and technology spend, not from traffic. A profile row shows the site's position in the whole ranking; a Top Sites row shows its position in the list you asked for.

What is techSpend? BuiltWith's estimate of the monthly cost of the paid technologies found on the site, in USD, as a lower bound. The Top Sites pages show 10,000 for every site in their first pages; the exact figure appears on the paid tabs of the site.

Which countries are available? Global and 40 countries: United States, United Kingdom, Canada, Australia, New Zealand, Germany, France, Netherlands, Italy, Spain, Mexico, India, Japan, Switzerland, China, Russia, Sweden, Norway, Brazil, Indonesia, Turkey, Saudi Arabia, Argentina, Poland, Belgium, Thailand, Austria, Israel, Hong Kong, Denmark, Singapore, Malaysia, South Korea, Philippines, Pakistan, Chile, Finland, Vietnam, Czech Republic and Romania.

How many rows can a Top Sites list give? 20 pages of 100, so 2,000 rows per list. All sites and online stores are two different lists, so a country gives up to 4,000 distinct rows.

Can I profile thousands of domains? Yes. Domains are read in order until maxItems, duplicates are skipped, and a domain BuiltWith does not know yields no row and a note in the run log. Very large lists take longer; split them across scheduled runs if you want fresh rows every day.

Why is companyName null on some ranked sites? BuiltWith has no company on file for that domain. The field is null rather than an empty string so your filters stay honest.

Why are technologies null on my Top Sites rows? The ranking pages do not list technologies. Turn includeTechnologies on to read each site's profile, or run the domains you care about through the website list.

What is a live lookup? When BuiltWith has no cached profile for a domain it scans the site on the spot and answers with what it finds: a shorter technology list and no rank, AI Index or dates. The row is flagged isLiveLookup: true so you can tell it from a full profile. Run the domain again a few days later to get the full profile once BuiltWith has built it.

Why did a profile run take longer than expected? Profiles are read about ten seconds apart, and a profile BuiltWith is still preparing is asked again half a minute later, up to three times. The run log says which domains are waiting. Domains BuiltWith kept behind its human test after three rounds get no row and a note in the log; run them again later.

How fresh is the data? Live: every run reads the pages at run time, no cache. lastDetectedAt tells you when BuiltWith last saw a technology on the site.

What happens when a run ends without rows? The run finishes with a status message that says why: unknown domains, an empty list, or a source that did not answer. No error rows are written to the dataset.

This Actor extracts publicly available data from builtwith.com. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with BuiltWith's terms of use and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). The output describes companies and websites, not individuals; where a company name or registration id appears, handle it as business data. The data returned is informational; verify accuracy for regulated use cases.

๐Ÿ“ฌ Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

Check out our other scrapers: silentflow on Apify