Skip to main content

Python SDK for the Rendershot screenshot & PDF generation API

Project description

rendershot-python

Python SDK for the Rendershot screenshot & PDF generation API.

Installation

pip install rendershot

Quick start

import rendershot

# Sync client
client = rendershot.RenderShotClient(api_key='your-api-key')

# Capture a screenshot
png_bytes = client.screenshot_url('https://example.com')

# Save directly to a file
client.screenshot_url_to_file('https://example.com', 'screenshot.png')

# Render a PDF
pdf_bytes = client.pdf_url('https://example.com')
client.pdf_html_to_file('<h1>Hello</h1>', 'output.pdf')

# Check your balance
balance = client.get_balance()
print(balance.credits_remaining)

Async client

import asyncio
import rendershot

async def main():
    async with rendershot.AsyncRenderShotClient(api_key='your-api-key') as client:
        png = await client.screenshot_url('https://example.com')
        await client.pdf_url_to_file('https://example.com', 'report.pdf')

asyncio.run(main())

Bulk rendering

All bulk methods submit jobs via the /v1/bulk endpoint, poll until complete, and save results to a folder.

# Bulk screenshots from URLs
paths = client.bulk_screenshot_urls(
    ['https://example.com', 'https://github.com'],
    output_dir='/tmp/screenshots',
)

# Bulk PDFs from an HTML Jinja2 template (great for invoices)
template = '''
<html><body>
  <h1>Invoice #{{ invoice_id }}</h1>
  <p>Amount: ${{ amount }}</p>
</body></html>
'''
paths = client.bulk_pdf_from_template(
    template,
    contexts=[
        {'invoice_id': 1001, 'amount': '99.00'},
        {'invoice_id': 1002, 'amount': '149.00'},
    ],
    output_dir='/tmp/invoices',
)

Configuration

Parameter Default Description
api_key required Your Rendershot API key
base_url https://api.rendershot.io API base URL

Bulk methods also accept poll_interval (seconds, default 2.0) and timeout (seconds, default 300.0).

Error handling

from rendershot import exceptions

try:
    client.screenshot_url('https://example.com')
except exceptions.AuthenticationError:
    print('Invalid API key')
except exceptions.RateLimitError as e:
    print(f'Rate limited, retry after {e.retry_after}s')
except exceptions.JobFailedError as e:
    print(f'Job {e.job_id} failed')
except exceptions.APIError as e:
    print(f'API error {e.status_code}: {e.detail}')

Project details


Download files

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

Source Distribution

rendershot-0.1.2.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

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

rendershot-0.1.2-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file rendershot-0.1.2.tar.gz.

File metadata

  • Download URL: rendershot-0.1.2.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for rendershot-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3592b7da9488319285fdc9679853ee03ac5a30325dbf30e977fa22dc1febca48
MD5 cfaac814b253624c2a9fc3bfb0545e15
BLAKE2b-256 a357126eb7a156bcf4bb5259411557989f1e5e134a7cdb338c182efca2884962

See more details on using hashes here.

File details

Details for the file rendershot-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: rendershot-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for rendershot-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4b54b1cae238c7e80f55f7d80c51b7eb7e2911482dd3d4100ea973bea205f755
MD5 556f1e8b112cc816a7111c8f6a4f3555
BLAKE2b-256 0092eeffeb6c0f2f068facaec22efaf87b509b70601dd636be2ce175cde023dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page