StackShare Company Tech Stack Scraper
Pricing
Pay per event
StackShare Company Tech Stack Scraper
🏢 Turn public StackShare company profiles into structured technographic records with company metadata, technology layers, displayed counts, observable tool links, and transparent source provenance.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Turn public StackShare company profiles into structured technographic records.
Give the Actor one or many StackShare profile URLs and receive company metadata, displayed technology-layer counts, and observable tool links in JSON, CSV, Excel, XML, or RSS through Apify datasets.
It supports both public profile formats:
https://stackshare.io/airbnb/airbnbhttps://stackshare.io/companies/stackshare
StackShare may show an anti-bot checkpoint to automated visitors. The Actor handles this transparently with bounded live attempts and an optional public archive fallback. Every result says whether it came from the live page or an archived snapshot, so stale data is never presented as current.
What does StackShare Company Tech Stack Scraper do?
The Actor extracts one company technology-stack record per input URL.
Each successful record can include:
- company name and description;
- company website and displayed location;
- total displayed tool count;
- StackShare's update label;
- ordered technology layers;
- displayed count for every layer;
- observable tool names and StackShare links;
- live-versus-archive provenance;
- scrape and snapshot timestamps.
When one URL cannot be extracted, the dataset contains a clear diagnostic for that URL. If every URL fails, the run exits with an error after preserving those diagnostics.
Who is it for?
Sales and RevOps teams
Enrich target-account lists with declared infrastructure, data, DevOps, utility, AI, and business tools.
Vendor marketing teams
Track which companies publicly associate themselves with a category or competing product.
Investors and analysts
Compare the technology choices of portfolio companies, competitors, or market segments.
Engineering teams
Research peer architectures before evaluating a framework, cloud service, database, or monitoring tool.
Data teams
Schedule repeatable snapshots and send structured records to a warehouse, spreadsheet, webhook, or BI workflow.
Why use this Actor?
🧩 Structured layers — preserve StackShare's displayed categories instead of returning an ungrouped keyword list.
🔗 Useful tool links — receive normalized StackShare URLs for tools observable on the profile.
🛡️ Transparent fallback — blocked live pages can fall back to the newest public Wayback snapshot.
🧾 Explicit provenance — fetchSource, snapshotTimestamp, and archiveUrl reveal exactly where a record came from.
📦 Bounded batch input — submit up to 4 public profile URLs per run, a limit verified for the archive-backed path within the 5-minute timeout.
⏱️ Bounded retries — avoid endless CAPTCHA and checkpoint loops.
🔌 Apify integrations — export datasets or connect runs to API clients, schedules, webhooks, Make, Zapier, Google Sheets, and MCP.
Supported StackShare URLs
Use public company-profile URLs only.
Supported:
https://stackshare.io/airbnb/airbnbhttps://stackshare.io/stackshare/stacksharehttps://stackshare.io/companies/stackshare
Not supported:
- StackShare search pages;
- category or tool pages;
- private account pages;
- arbitrary company websites;
- URLs from hosts other than
stackshare.io.
Unsupported URLs fail closed rather than producing misleading records.
How to scrape a StackShare company tech stack
- Open the Actor input page.
- Add one or more public StackShare company profile URLs.
- Keep Use archived profile fallback enabled for the most reliable first run.
- Keep the retry limit at
1unless you have a reason to retry the live route. - Click Start.
- Open the dataset to inspect company, layer, tool, and provenance fields.
- Export the dataset or connect it to your workflow.
A one-URL prefilled run is intentionally small and suitable for a first test.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | Airbnb profile | One to 4 supported public StackShare company URLs. The four-profile ceiling keeps sequential archive fallbacks within the 5-minute run timeout. |
allowArchivedFallback | boolean | true | Use the newest public Wayback snapshot if the live profile is blocked. |
maxRetries | integer | 1 | Bounded live attempts before fallback or an error. Range: 1–3. |
proxyConfiguration | object | disabled | Optional Apify Proxy or custom proxy for live requests. |
Example:
{"startUrls": [{ "url": "https://stackshare.io/airbnb/airbnb" },{ "url": "https://stackshare.io/companies/stackshare" }],"allowArchivedFallback": true,"maxRetries": 1}
Output data
| Field | Type | Meaning |
|---|---|---|
sourceUrl | string | Canonical public StackShare URL requested. |
status | string | ok or error. |
companyName | string | Company name displayed on the profile. |
description | string | Public company description when observable. |
website | string | Displayed company website when observable. |
location | string | Displayed location when observable. |
totalTools | number | Total tools reported by the profile. |
updatedLabel | string | StackShare update label when displayed. |
layers | array | Ordered layers with counts and observable tools. |
fetchSource | string | live or archive. |
snapshotTimestamp | string | Wayback capture timestamp for archived records. |
archiveUrl | string | Immutable public snapshot URL. |
error | string | Per-URL diagnostic when extraction fails. |
scrapedAt | string | ISO timestamp when the Actor processed the URL. |
Output example
{"sourceUrl": "https://stackshare.io/airbnb/airbnb","status": "ok","companyName": "Airbnb","description": "Founded in August 2008 and based in San Francisco, California...","website": "https://nerds.airbnb.com/","totalTools": 55,"updatedLabel": "Updated 1 year ago","layers": [{"name": "Application & Data","count": 20,"tools": [{ "name": "Amazon EC2", "url": "https://stackshare.io/amazon-ec2" },{ "name": "Ruby", "url": "https://stackshare.io/ruby" }]}],"fetchSource": "archive","snapshotTimestamp": "20260125051238","archiveUrl": "https://web.archive.org/web/20260125051238id_/https://stackshare.io/airbnb/airbnb","scrapedAt": "2026-07-22T00:00:00.000Z"}
Actual tools and timestamps depend on the source profile or newest available snapshot.
Technology layers
StackShare commonly groups tools into these layers:
- AI;
- Application & Data;
- Utilities;
- DevOps;
- Business Tools.
The Actor preserves the order shown by StackShare. count is the displayed layer count. tools includes only tool names and links observable in the fetched HTML.
Some /companies/<slug> pages display only a subset of tool cards while reporting a larger count. The Actor intentionally keeps the displayed count separate from the observable tool array rather than inventing missing tool names.
Live and archived data provenance
A result with fetchSource: "live" was parsed from the live StackShare response.
A result with fetchSource: "archive" came from the newest successful public snapshot found through the Wayback CDX index.
For archived records:
snapshotTimestampidentifies capture time;archiveUrllinks to the immutable source;scrapedAtidentifies processing time, not data freshness.
Disable allowArchivedFallback when your workflow must reject anything except live data. A checkpointed URL will then emit an error diagnostic.
How much does it cost to scrape StackShare company stacks?
The Actor uses pay-per-event pricing:
- a small one-time start event per run;
- one result event for each successfully extracted company record;
- no result charge for error diagnostic rows.
The input form and run console show the exact price for your Apify plan. Tiered result pricing decreases on higher plans. Group several profile URLs into one run to spread the start event across more companies.
A one-company prefilled run is the cheapest way to validate the output contract before scheduling a larger account list.
Sales enrichment workflow
- Export StackShare profile URLs from your CRM research queue.
- Run the Actor with those URLs.
- Filter records with
status = ok. - Flatten
layers[].tools[]in your data warehouse or automation tool. - Match tool names against your product, partners, or competitors.
- Write the result back to account fields.
- Preserve provenance fields for analyst review.
This workflow is suitable for declared/public technographic evidence. It is not proof that every displayed tool remains deployed today.
Monitoring workflow
Use an Apify schedule to run the same URL set weekly or monthly.
Store each dataset with:
- company name;
- snapshot timestamp;
- total tool count;
- layer counts;
- normalized tool names;
- fetch source.
Compare successive datasets downstream to detect additions, removals, or changed counts. When the source is archived, compare snapshotTimestamp first so an unchanged archive is not mistaken for a new company update.
Integrations
Google Sheets
Use the Apify Google Sheets integration to send one company record per row. Keep layers as JSON or flatten it with an automation step.
Make and Zapier
Trigger a run when a CRM account reaches a research stage, then map successful results back to the account.
Webhooks
Send a run-succeeded webhook to your data pipeline and fetch the default dataset through its API URL.
Data warehouses
Export JSON or CSV to BigQuery, Snowflake, PostgreSQL, or an object-storage ingestion job.
Slack alerts
Compare scheduled datasets and notify a channel when selected tool names appear or disappear.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/stackshare-company-tech-stack-scraper').call({startUrls: [{ url: 'https://stackshare.io/airbnb/airbnb' },{ url: 'https://stackshare.io/companies/stackshare' }],allowArchivedFallback: true,maxRetries: 1});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/stackshare-company-tech-stack-scraper').call(run_input={'startUrls': [{'url': 'https://stackshare.io/airbnb/airbnb'}],'allowArchivedFallback': True,'maxRetries': 1,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL API example
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~stackshare-company-tech-stack-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://stackshare.io/airbnb/airbnb"}],"allowArchivedFallback": true,"maxRetries": 1}'
Fetch dataset items after the run succeeds:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"
MCP and AI agents
Connect the Actor to Claude or another MCP client through this actor-scoped Apify MCP URL:
https://mcp.apify.com/?tools=automation-lab/stackshare-company-tech-stack-scraper
Claude Code
$claude mcp add --transport http stackshare-tech-stacks "https://mcp.apify.com/?tools=automation-lab/stackshare-company-tech-stack-scraper"
Claude Desktop, Cursor, and VS Code
Add the same HTTP server in Claude Desktop, Cursor, or VS Code with this MCP JSON configuration:
{"mcpServers": {"stackshare-tech-stacks": {"url": "https://mcp.apify.com/?tools=automation-lab/stackshare-company-tech-stack-scraper"}}}
Example prompts:
- “Extract the technology layers from this StackShare Airbnb profile and summarize the data stack.”
- “Compare these five public StackShare company profiles and list shared DevOps tools.”
- “Return only companies that visibly use Datadog, and include source provenance.”
- “Explain whether each result is live or archived before drawing conclusions.”
Keep your Apify token in the MCP client environment rather than in prompts.
Tips for reliable runs
- Keep
maxRetriesat1; repeated checkpoint requests rarely improve a blocked live route. - Leave the archived fallback enabled for general research.
- Disable the fallback for workflows that require only live pages.
- Review
snapshotTimestampbefore using a record in time-sensitive decisions. - Batch up to four URLs to reduce start-fee cost per company while staying within the verified archive-backed runtime envelope.
- Use canonical profile URLs rather than redirected tracking links.
- Schedule moderate snapshots instead of polling profiles continuously.
- Treat displayed tools as public declarations, not independent deployment verification.
Troubleshooting
Why is fetchSource set to archive?
StackShare served a security checkpoint or otherwise did not return useful profile HTML. The Actor used the newest public snapshot and recorded its timestamp and URL.
Why are there fewer tools than the layer count?
Some company-profile layouts report a total but render only a visible subset of tool cards in the HTML. The Actor preserves the reported count and returns only observable tools.
Why did the run fail after saving error rows?
Every requested profile failed. The Actor preserves per-URL diagnostics, then exits non-zero so schedules and monitoring systems do not mistake total extraction failure for success.
Why was my URL rejected before scraping?
The Actor accepts only the two documented public StackShare company URL shapes. Tool pages, search pages, and other hosts are rejected to prevent false output.
Data quality and limitations
StackShare profiles are community or company-declared data. A listed technology may be historical, incomplete, or scoped to one team.
Archive snapshots can lag behind the live profile. Always inspect:
fetchSource;snapshotTimestamp;updatedLabel;- observable tool count versus displayed count.
The Actor does not infer hidden technologies, access private stacks, bypass account permissions, or claim that a tool is currently deployed.
Is scraping StackShare legal?
Public web data can often be collected for legitimate purposes, but legal obligations depend on your location, purpose, contract, and data handling.
Use the Actor responsibly:
- process only public profile URLs;
- respect applicable laws and contractual restrictions;
- avoid personal-data enrichment without a lawful basis;
- store only data necessary for your workflow;
- review source provenance before redistribution.
This documentation is not legal advice.
FAQ
Does the Actor require a StackShare account?
No. V1 is limited to public company profiles.
Does it use StackShare's paid API?
No. It reads public HTML or a public archived snapshot.
Can it discover StackShare companies from a keyword?
No. Supply exact public company profile URLs.
Can I submit both URL formats in one run?
Yes.
Are failed URLs charged as results?
No. The result event is charged only after a successful company record is saved.
Can I export to CSV or Excel?
Yes. Use the dataset export controls or API format parameter.
Does it return every tool on /companies/<slug> pages?
It returns every tool observable in fetched HTML and separately preserves the displayed layer counts.
Can I force live-only extraction?
Yes. Set allowArchivedFallback to false.
Related scrapers
Build a broader company-intelligence workflow with other Automation Lab Actors:
- Similarweb Scraper for website traffic context;
- The Org Company Profiles & People Scraper for public organization research;
- Company Funding Tracker for funding signals;
- Sitemap URL Status Auditor for website URL monitoring.
Use StackShare Company Tech Stack Scraper when the source of truth you want to capture is a public StackShare company profile.
Support
If a supported URL fails unexpectedly, share:
- the public StackShare URL;
- the run ID;
- whether archived fallback was enabled;
- the saved
errordiagnostic; - the approximate time of the run.
That evidence makes it possible to distinguish URL validation, source blocking, archive availability, and parser changes quickly.