Archivist
Archive webpages and files with a typed Python API.
Python clients for Internet Archive and Archive.today, with synchronous and asynchronous APIs.
Features
- Search Internet Archive's Wayback capture history
- Save pages through Internet Archive's Save Page Now service
- Upload files to Internet Archive and request item removal
- Check capture progress, service availability, and account capacity
- Browse Archive.today history and find first, latest, or closest captures
- Use the same models from synchronous and asynchronous code
- Keep credentials and sensitive URL data out of representations and logs
Installation
Archivist requires Python 3.11 or later.
uv add archivist-py
Using pip:
pip install archivist-py
Internet Archive
Find the oldest Wayback Machine capture without an account:
from archivist import (
InternetArchiveCdxRecord,
InternetArchiveCdxResult,
InternetArchiveClient,
)
with InternetArchiveClient() as client:
captures: InternetArchiveCdxResult = client.search("https://example.com/", limit=1)
oldest: InternetArchiveCdxRecord | None = next(iter(captures), None)
if oldest is not None:
print(f"{oldest.timestamp:%Y-%m-%d}: {oldest.archive_url()}")
Save a page anonymously and wait for the finished capture in one call:
from archivist import InternetArchiveClient, InternetArchiveSuccessStatus
with InternetArchiveClient() as client:
capture: InternetArchiveSuccessStatus = client.save("https://example.com/")
print(capture.archive_url())
Credentials are optional for the Wayback examples above. Provide them for account features and restricted save options such as screenshots, emailed results, and WACZ files.
Upload a file to a new Internet Archive item using your account:
from pathlib import Path
from archivist import (
InternetArchiveAccount,
InternetArchiveClient,
InternetArchiveUploadOptions,
)
account = InternetArchiveAccount("you@example.com", "your-password")
options = InternetArchiveUploadOptions(
identifier="your-unique-item-id",
title="Project notes",
description="Notes from my project.",
subjects=["notes"],
)
with InternetArchiveClient(account=account) as client:
result = client.upload(Path("notes.txt"), options)
print(result.details_url)
For upload options and item removal, see the Internet Archive guide.
Archive.today
Find the oldest Archive.today capture through its Memento interface:
from archivist import ArchiveTodayClient, ArchiveTodayMemento
with ArchiveTodayClient() as client:
oldest: ArchiveTodayMemento | None = client.first("https://example.com/")
if oldest is not None:
print(f"{oldest.archived_at:%Y-%m-%d}: {oldest.archive_url}")
Archivist can browse existing Archive.today captures, but cannot create new ones because the service's bot protection prevents reliable automated access.
Async Support
Async clients mirror the synchronous API. Use AsyncInternetArchiveClient or
AsyncArchiveTodayClient with async with, then await the same operations.
Documentation
Read the full documentation for authentication, save options, async examples, error handling, and the complete API reference.
Release files for archivist-py 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| archivist_py-1.2.0.tar.gz | 53.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| archivist_py-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 118.8 kB
Release files / archivist_py-1.2.0.tar.gz
| Download URL | archivist_py-1.2.0.tar.gz |
|---|---|
| Size | 53.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d81a93178ebe6f2ca8bc350dc5f680a089f9e525ef9a8f895590bc8cf014bb6c
|
|
BLAKE2b-256 checksum How to use checksums |
550f7a803da450a5d54ed4b63e1fb841c81b3eff77989cab7bc905e4ef3a3896
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / archivist_py-1.2.0-py3-none-any.whl
| Download URL | archivist_py-1.2.0-py3-none-any.whl |
|---|---|
| Size | 64.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7497587069c4fe7e67a28eaaaf1096cf173d133d5e257fa04eed5f43e2bc77a2
|
|
BLAKE2b-256 checksum How to use checksums |
71c8d1cb2baeecc6ce2b15e5fc38cee784313e5b47914efdb564bb0432dc1315
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|