{"library":"praw","title":"Python Reddit API Wrapper (PRAW)","description":"PRAW (Python Reddit API Wrapper) is a Python package that provides a straightforward interface to Reddit's API. It abstracts away much of the complexity, adhering to Reddit's API rules internally, such as managing rate limits. The library is actively maintained, currently at version 7.8.1, with a regular release cadence that often includes new features and bug fixes.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install praw"],"cli":null},"imports":["import praw\nreddit = praw.Reddit(...)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import praw\nimport os\n\n# It's recommended to use a praw.ini file or environment variables for credentials.\n# For quickstart, we'll use environment variables.\n\nreddit = praw.Reddit(\n    client_id=os.environ.get(\"REDDIT_CLIENT_ID\", \"\"),\n    client_secret=os.environ.get(\"REDDIT_CLIENT_SECRET\", \"\"),\n    password=os.environ.get(\"REDDIT_PASSWORD\", \"\"),\n    user_agent=os.environ.get(\"REDDIT_USER_AGENT\", \"my_unique_user_agent_string_v1.0 (by u/YOUR_REDDIT_USERNAME)\"),\n    username=os.environ.get(\"REDDIT_USERNAME\", \"\"),\n)\n\n# Example: Get top 5 hot posts from r/python\nprint(\"Top 5 hot posts from r/python:\")\nfor submission in reddit.subreddit(\"python\").hot(limit=5):\n    print(f\"- {submission.title} (Score: {submission.score})\")\n\n# Example: Access your inbox (requires authenticated instance)\n# try:\n#     for message in reddit.inbox.unread(limit=5):\n#         print(f\"New message: {message.subject}\")\n#         message.mark_read()\n# except prawcore.exceptions.ResponseException as e:\n#     print(f\"Could not access inbox (read_only instance or invalid auth?): {e}\")\n\n# To verify if the instance is read-only:\nprint(f\"Is Reddit instance read-only? {reddit.read_only}\")","lang":"python","description":"This quickstart demonstrates how to initialize PRAW for both read-only (if only client_id, client_secret, and user_agent are provided) or authenticated (if username and password are also provided) access. It then shows how to fetch popular posts from a subreddit. Credentials should ideally be stored in a `praw.ini` file or environment variables, not hardcoded.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"7.8.1","pypi_latest":"7.8.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.4,"avg_import_s":0.89,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.79,"mem_mb":16.2,"disk_size":"23.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.57,"mem_mb":16.2,"disk_size":"24M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.97,"mem_mb":17.9,"disk_size":"26.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.85,"mem_mb":17.9,"disk_size":"27M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.11,"mem_mb":18,"disk_size":"17.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":1.07,"mem_mb":18,"disk_size":"18M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.13,"mem_mb":19.1,"disk_size":"17.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":1.09,"mem_mb":19.1,"disk_size":"18M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.69,"mem_mb":15.5,"disk_size":"23.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"praw","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.66,"mem_mb":15.5,"disk_size":"24M"}]}}