Skip to main content

twscrape

Twitter GraphQL and Search API implementation with SNScrape data models.

Install

pip install https://github.com/vladkens/tw-api

Features

  • Support both Search & GraphQL Twitter API
  • Async / Await functions (can run multiple scrappers in parallel same time)
  • Login flow (with receiving verification code from email)
  • Saving / restore accounts sessions
  • Raw Twitter API responses & SNScrape models
  • Automatic account switching to smooth Twitter API rate limits

Usage

import asyncio
from twscrape import AccountsPool, API, gather
from twscrape.logger import set_log_level

async def main():
    pool = AccountsPool()  # or pool = AccountsPool("path-to.db") - default is `accounts.db` 
    await pool.add_account("user1", "pass1", "user1@example.com", "email_pass1")
    await pool.add_account("user2", "pass2", "user2@example.com", "email_pass2")

    # log in to all fresh accounts
    await pool.login_all()

    api = API(pool)

    # search api
    await gather(api.search("elon musk", limit=20))  # list[Tweet]

    # graphql api
    tweet_id = 20
    user_id, user_login = 2244994945, "twitterdev"

    await api.tweet_details(tweet_id)  # Tweet
    await gather(api.retweeters(tweet_id, limit=20))  # list[User]
    await gather(api.favoriters(tweet_id, limit=20))  # list[User]

    await api.user_by_id(user_id)  # User
    await api.user_by_login(user_login)  # User
    await gather(api.followers(user_id, limit=20))  # list[User]
    await gather(api.following(user_id, limit=20))  # list[User]
    await gather(api.user_tweets(user_id, limit=20))  # list[Tweet]
    await gather(api.user_tweets_and_replies(user_id, limit=20))  # list[Tweet]

    # note 1: limit is optional, default is -1 (no limit)
    # note 2: all methods have `raw` version e.g.:

    async for tweet in api.search("elon musk"):
        print(tweet.id, tweet.user.username, tweet.rawContent)  # tweet is `Tweet` object

    async for rep in api.search_raw("elon musk"):
        print(rep.status_code, rep.json())  # rep is `httpx.Response` object

    # change log level, default info
    set_log_level("DEBUG")

    # Tweet & User model can be converted to regular dict or json, e.g.:
    doc = await api.user_by_id(user_id)  # User
    doc.dict()  # -> python dict
    doc.json()  # -> json string

if __name__ == "__main__":
    asyncio.run(main())

You can use login_all once in your program to pass the login flow and add the accounts to the database. Re-runs will use the previously activated accounts.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twscrape-0.1.0.tar.gz (128.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twscrape-0.1.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file twscrape-0.1.0.tar.gz.

File metadata

  • Download URL: twscrape-0.1.0.tar.gz
  • Upload date:
  • Size: 128.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for twscrape-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e27449bbf25a6f22dc726a6eeb98fb78f0ccd6dfbe161bcef99d8f701667ab0
MD5 7dfd6de903454f1c4cf94b4d5cb398e9
BLAKE2b-256 ce301dd94a3fece55246a83dc454d2d7a2de3a2d6acd1150eaef5204583eaba4

See more details on using hashes here.

File details

Details for the file twscrape-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: twscrape-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for twscrape-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57ebb0e3d43a0b4a576bca76614a86973c5480f63eed1babfbfd6cddfcf505e7
MD5 fe638f815d50a87f1cf18526b7f44540
BLAKE2b-256 2a59fcb28ffadb4dde35c593771a7168e883bb9a47281d223fb1b49d79873a08

See more details on using hashes here.

Release history Release notifications | RSS feed

0.20.1

2 files

0.20.0

2 files

0.19.2

2 files

0.19.1

2 files

0.19.0

2 files

0.18.1

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14

2 files

0.13

2 files

0.12

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page