{"adoption": {"forks": 402, "observed_at": "2026-08-28T04:08:59.840064+00:00", "stars": 4788}, "canonical_url": "https://ross.abutalabs.com/products/htmlparser2", "card": {"archived": false, "artifact_type": "library", "description": "The fast & forgiving HTML and XML parser", "domain": ["parsers", "web-development", "developer-tools"], "enriched": true, "function": ["parser", "web-scraping"], "health_score": 98, "homepage": "https://feedic.com/htmlparser2", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["fb55/htmlparser2"], "name": "fb55/htmlparser2", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-25T12:45:26+00:00", "repo": "fb55/htmlparser2", "stars": 4788, "tags": ["html-parser", "xml-parser", "dom", "streaming", "forgiving-parser", "typescript", "nodejs"], "topics": ["html-parser", "javascript", "dom", "htmlparser2", "html", "xml", "parser"], "urls": [], "use_cases": ["parse html from web pages in node", "extract links and text from html documents", "parse xml feeds like rss and atom", "scrape websites with cheerio-style selectors", "stream-parse large html documents with minimal memory", "build a dom tree from malformed html"], "what_it_is": "htmlparser2 is a fast, forgiving HTML and XML parser for JavaScript and TypeScript, offering a low-allocation callback interface as well as DOM output via its ecosystem packages. It prioritizes speed over strict HTML spec compliance, making it the engine behind tools like cheerio.", "when_to_avoid": ["you need strict HTML5 spec compliance and error correction (use parse5)", "you need a full browser-grade DOM with CSS selector querying out of the box"], "when_to_choose": ["you need the fastest html/xml parsing in javascript", "input html may be malformed or non-spec-compliant", "you want a streaming, low-allocation callback-based parser", "you are building scraping or feed-processing tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/htmlparser2", "repo": "fb55/htmlparser2", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "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:08:59.840064+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.840064+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:18:41.772642+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "75f7b020d68159e8bfd4d5f9025ab0d8181d84a4e053797d70b570ece43bb740", "fetched_at": "2026-08-28T04:08:59.840064+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fb55/htmlparser2"}, {"content_hash": "b0f1ea9925b0722d8b75b683f36e0c4c751f1330ffe5835e0f1d0db0c668665d", "fetched_at": "2026-08-29T09:02:07.394026+00:00", "kind": "homepage", "missing": false, "url": "https://feedic.com/htmlparser2"}, {"content_hash": "6e4636685b15661661e28ea57a148b8777e32dd42606d386bff9812814d31f8f", "fetched_at": "2026-08-29T09:02:07.403234+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/htmlparser2"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 63}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5485, "days_push": 8, "days_rel": 166, "gap_med": 56, "n_releases_24m": 4}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}