{"adoption": {"forks": 333, "observed_at": "2026-08-28T04:04:40.041496+00:00", "stars": 1417}, "canonical_url": "https://ross.abutalabs.com/products/openwpm", "card": {"archived": false, "artifact_type": "framework", "description": "A web privacy measurement framework", "domain": ["privacy", "security", "web-development", "crawlers"], "enriched": true, "function": ["web-scraping", "privacy", "security", "developer-tools", "data-science"], "health_score": 100, "homepage": "https://openwpm.readthedocs.io", "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["openwpm/OpenWPM"], "name": "openwpm/OpenWPM", "platform": ["python"], "pushed_at": "2026-08-25T17:39:07+00:00", "repo": "openwpm/OpenWPM", "stars": 1417, "tags": ["web-privacy-measurement", "browser-automation", "firefox", "selenium", "measurement-studies", "crawler", "research", "linux", "macos", "docker"], "topics": ["python3", "privacy", "crawler", "firefox"], "urls": [], "use_cases": ["measure tracking cookies across millions of websites", "run large-scale web privacy audits", "collect browser fingerprinting data for research", "crawl websites to study third-party trackers", "automate Firefox for privacy measurement studies", "analyze online tracking behavior at scale"], "what_it_is": "OpenWPM is a web privacy measurement framework built on Firefox with Selenium automation, designed to collect data from thousands to millions of websites. It provides instrumentation hooks for privacy research studies at scale.", "when_to_avoid": ["you need Windows support, which is not available", "you want a general-purpose scraper without privacy instrumentation", "you need a lightweight single-site scraping tool"], "when_to_choose": ["you need to conduct large-scale web privacy or tracking measurement studies", "you want automated Firefox-based browsing with instrumentation hooks", "you need reproducible crawls of thousands to millions of sites"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openwpm", "repo": "openwpm/OpenWPM", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.041496+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:02.011103+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94d3e8f77e27d851c17c84301ae8e0acca8d96c8d41d4bb5a3f24a56602dd891", "fetched_at": "2026-08-28T04:04:40.041496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openwpm/OpenWPM"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4467, "days_push": 8, "days_rel": 9, "gap_med": 53.5, "n_releases_24m": 7}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}