StackShare Company Tech Stack Scraper avatar

StackShare Company Tech Stack Scraper

Pricing

Pay per event

Go to Apify Store
StackShare Company Tech Stack Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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/airbnb
  • https://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 provenancefetchSource, 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/airbnb
https://stackshare.io/stackshare/stackshare
https://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

  1. Open the Actor input page.
  2. Add one or more public StackShare company profile URLs.
  3. Keep Use archived profile fallback enabled for the most reliable first run.
  4. Keep the retry limit at 1 unless you have a reason to retry the live route.
  5. Click Start.
  6. Open the dataset to inspect company, layer, tool, and provenance fields.
  7. Export the dataset or connect it to your workflow.

A one-URL prefilled run is intentionally small and suitable for a first test.

Input

FieldTypeDefaultDescription
startUrlsarrayAirbnb profileOne to 4 supported public StackShare company URLs. The four-profile ceiling keeps sequential archive fallbacks within the 5-minute run timeout.
allowArchivedFallbackbooleantrueUse the newest public Wayback snapshot if the live profile is blocked.
maxRetriesinteger1Bounded live attempts before fallback or an error. Range: 1–3.
proxyConfigurationobjectdisabledOptional 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

FieldTypeMeaning
sourceUrlstringCanonical public StackShare URL requested.
statusstringok or error.
companyNamestringCompany name displayed on the profile.
descriptionstringPublic company description when observable.
websitestringDisplayed company website when observable.
locationstringDisplayed location when observable.
totalToolsnumberTotal tools reported by the profile.
updatedLabelstringStackShare update label when displayed.
layersarrayOrdered layers with counts and observable tools.
fetchSourcestringlive or archive.
snapshotTimestampstringWayback capture timestamp for archived records.
archiveUrlstringImmutable public snapshot URL.
errorstringPer-URL diagnostic when extraction fails.
scrapedAtstringISO 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:

  • snapshotTimestamp identifies capture time;
  • archiveUrl links to the immutable source;
  • scrapedAt identifies 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

  1. Export StackShare profile URLs from your CRM research queue.
  2. Run the Actor with those URLs.
  3. Filter records with status = ok.
  4. Flatten layers[].tools[] in your data warehouse or automation tool.
  5. Match tool names against your product, partners, or competitors.
  6. Write the result back to account fields.
  7. 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 os
from apify_client import ApifyClient
client = 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 maxRetries at 1; 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 snapshotTimestamp before 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.

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.

Build a broader company-intelligence workflow with other Automation Lab Actors:

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 error diagnostic;
  • the approximate time of the run.

That evidence makes it possible to distinguish URL validation, source blocking, archive availability, and parser changes quickly.