{"adoption": {"forks": 2746, "observed_at": "2026-08-28T04:11:15.150622+00:00", "stars": 16398}, "canonical_url": "https://ross.abutalabs.com/products/twint", "card": {"archived": true, "artifact_type": "cli-tool", "description": "An advanced Twitter scraping & OSINT tool written in Python that doesn't use Twitter's API, allowing you to scrape a user's followers, following, Tweets and more while evading most API limitations.", "domain": ["osint", "social-media", "crawlers", "security", "data-science"], "enriched": true, "function": ["web-scraping", "osint", "cli", "search-engine", "etl"], "health_score": 10, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["twintproject/twint"], "name": "twintproject/twint", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2023-02-23T13:58:09+00:00", "repo": "twintproject/twint", "stars": 16398, "tags": ["twitter", "scraping", "no-api", "elasticsearch", "social-intelligence", "unmaintained", "docker"], "topics": ["osint", "twitter", "python", "scrape", "tweets", "elasticsearch", "kibana", "scrape-followers", "scrape-likes", "scrape-following", "twint", "tweep"], "urls": [], "use_cases": ["scrape all tweets from a twitter user without api limits", "collect followers and following lists for osint investigations", "search tweets by hashtag or keyword and export to csv", "extract emails and phone numbers from tweets", "analyze twitter trends and topics for research", "index scraped tweets into elasticsearch and visualize with kibana"], "what_it_is": "Twint is a Python CLI tool and library that scrapes tweets, followers, following, and likes from Twitter without using the official API or any authentication. It supports advanced search operators, exporting to CSV/JSON/Elasticsearch, and extracting sensitive data like emails and phone numbers from tweets.", "when_to_avoid": ["you need a maintained tool - Twitter's 2023 API changes broke Twint and it is no longer updated", "you need reliable, long-term production scraping", "you target platforms other than Twitter"], "when_to_choose": ["you need historical tweets beyond the API's 3200-tweet limit", "you want anonymous scraping with no Twitter account or API keys", "you're doing OSINT research on Twitter accounts and topics"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/twint", "repo": "twintproject/twint", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "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:11:15.150622+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:15.150622+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:05:07.597781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f643ca8bd469b681c851ad12d4d65410c068b982b376bbe4ba2c7e87c5431394", "fetched_at": "2026-08-28T04:11:15.150622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/twintproject/twint"}, {"content_hash": "14f456942cf2997c3c3fbfc101cacbc3712de7a14798094d00383605da230ce8", "fetched_at": "2026-08-29T08:02:25.031470+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/twint/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3371, "days_push": 1287, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}