{"adoption": {"forks": 1897, "observed_at": "2026-08-28T04:08:55.135007+00:00", "stars": 4618}, "canonical_url": "https://ross.abutalabs.com/products/crawler4j", "card": {"archived": false, "artifact_type": "library", "description": "Open Source Web Crawler for Java", "domain": ["crawlers", "web-development", "developer-tools"], "enriched": true, "function": ["web-scraping", "http-client", "parser"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["yasserg/crawler4j"], "name": "yasserg/crawler4j", "platform": ["jvm", "cross-platform"], "pushed_at": "2021-11-04T08:31:46+00:00", "repo": "yasserg/crawler4j", "stars": 4618, "tags": ["web-crawler", "java", "multi-threaded", "html-parsing"], "topics": [], "urls": [], "use_cases": ["crawl a website and extract all pages", "build a multi-threaded web crawler in Java", "scrape HTML content and extract links from pages", "collect data from websites for indexing or analysis", "filter which URLs the crawler should visit", "download and parse web pages at scale"], "what_it_is": "crawler4j is an open-source web crawler library for Java that provides a simple interface for building multi-threaded web crawlers in minutes. Users extend a WebCrawler class to decide which URLs to visit and how to process fetched pages.", "when_to_avoid": ["you need a JavaScript-rendered (headless browser) crawler", "you need a distributed or highly scalable crawling system", "you're not working on the JVM platform", "you need actively maintained software with recent releases"], "when_to_choose": ["you need a simple, ready-to-use crawler on the JVM", "you want multi-threaded crawling with minimal setup", "you need URL filtering and HTML parsing out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/crawler4j", "repo": "yasserg/crawler4j", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "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:55.135007+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.135007+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:40.144081+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1df6c1609c451692e27b25f3426d6e5e4dd7458d9cca8fb5b7f1940eeb583ad6", "fetched_at": "2026-08-28T04:08:55.135007+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yasserg/crawler4j"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 5359, "days_push": 1763, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}