{"id":10209,"library":"savepagenow","title":"savepagenow","description":"savepagenow is a simple Python wrapper and command-line interface for archive.org’s 'Save Page Now' capturing service. It allows users to programmatically request that the Internet Archive save a specific URL. The library is currently at version 1.3.1 and maintains an active release cadence, primarily with dependency updates and important feature additions like authentication and rate limit documentation.","status":"active","version":"1.3.1","language":"python","source_language":"en","source_url":"https://github.com/palewire/savepagenow","tags":["archive","web-archive","internet-archive","web-scraping","api-wrapper"],"install":[{"cmd":"pip install savepagenow","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Used for making HTTP requests to the Internet Archive's API.","package":"requests"}],"imports":[{"wrong":"from savepagenow import save_page_now","symbol":"capture","correct":"from savepagenow import capture"},{"symbol":"capture_or_cache","correct":"from savepagenow import capture_or_cache"},{"symbol":"CachedPage","correct":"from savepagenow import CachedPage"}],"quickstart":{"code":"import os\nfrom savepagenow import save_page_now\n\n# Replace with the URL you want to archive\nurl_to_archive = \"https://example.com/\"\n\n# Optional: Set authentication credentials via environment variables or direct arguments\n# If you don't set these, captures will be public (if supported by IA)\n# For private captures, you'll need a Wayback Machine access key and secret.\n# WAYBACK_ACCESS_KEY='YOUR_ACCESS_KEY'\n# WAYBACK_SECRET_KEY='YOUR_SECRET_KEY'\n\n# Example using environment variables (recommended)\naccess_key = os.environ.get('WAYBACK_ACCESS_KEY', '')\nsecret_key = os.environ.get('WAYBACK_SECRET_KEY', '')\n\ntry:\n    if access_key and secret_key:\n        print(f\"Attempting to save {url_to_archive} with authentication...\")\n        archive = save_page_now(\n            url_to_archive,\n            auth_key=access_key,\n            auth_secret=secret_key\n        )\n    else:\n        print(f\"Attempting to save {url_to_archive} without authentication...\")\n        archive = save_page_now(url_to_archive)\n\n    if archive.get('archive_url'):\n        print(f\"Page saved successfully: {archive['archive_url']}\")\n    else:\n        print(f\"Failed to save page. Response: {archive}\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to use `savepagenow` to archive a URL. It includes an example of how to optionally pass authentication credentials, which are required for private captures. It's recommended to set `WAYBACK_ACCESS_KEY` and `WAYBACK_SECRET_KEY` environment variables for authenticated use."},"warnings":[{"fix":"Implement delays or exponential backoff between requests, especially when processing multiple URLs. Check the `savepagenow` README for the most current advice on rate limits.","message":"The Internet Archive's 'Save Page Now' service has implemented rate limits. Exceeding these limits will result in HTTP 429 (Too Many Requests) errors. Rapid, consecutive requests should be avoided or spaced out.","severity":"gotcha","affected_versions":"1.3.1+"},{"fix":"Ensure you have valid `WAYBACK_ACCESS_KEY` and `WAYBACK_SECRET_KEY` set as environment variables or passed directly as `auth_key` and `auth_secret` arguments to `save_page_now`.","message":"Authentication is required for certain types of captures, particularly private ones. If you receive 401 Unauthorized or 403 Forbidden errors, it likely means your API keys are missing or invalid, or you lack the necessary permissions.","severity":"gotcha","affected_versions":"1.3.0+"},{"fix":"Implement robust error handling around your calls to `save_page_now`, including retries with delays for transient network or service errors.","message":"The Internet Archive's 'Save Page Now' service can sometimes be slow or temporarily unavailable. While `savepagenow` handles network requests, failures might occur due to upstream service issues.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"search_vec":"'1.3.1':41 'activ':45 'addit':55 'allow':22 'api':73 'api-wrapp':72 'archiv':30,62,65,68 'archive.org':14 'authent':57 'cadenc':47 'captur':19 'command':10 'command-lin':9 'current':38 'depend':50 'document':61 'featur':54 'import':53 'interfac':12 'internet':29,67 'internet-arch':66 'librari':36 'like':56 'limit':60 'line':11 'maintain':43 'page':17 'primarili':48 'programmat':25 'python':6 'rate':59 'releas':46 'request':26 'save':16,31 'savepagenow':1,2 'scrape':71 'servic':20 'simpl':5 'specif':33 'updat':51 'url':34 'user':23 'version':40 'web':64,70 'web-arch':63 'web-scrap':69 'wrapper':7,74","created_at":"2026-04-17T01:22:57.230278+00:00","updated_at":"2026-04-17T01:22:57.230278+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.3.1","cli_name":"savepagenow","cli_version":"Usage: savepagenow [OPTIONS] URL","type":"library","homepage":null,"github":"https://github.com/palewire/savepagenow","docs":"http://palewi.re/docs/savepagenow","changelog":null,"pypi":"https://pypi.org/project/savepagenow/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}