Skip to main content

CLI for I-66 inside-the-Beltway toll lookups

Project description

i66tolls

Command-line tool to check tolls on I-66 inside the Capital Beltway (between I-495 and the Theodore Roosevelt Bridge).

Run it with no arguments for an interactive wizard, or pass entry/exit IDs and flags for a quick lookup.

Data comes from VDOT's official toll calculator at vai66tolls.com.

DISCLAIMER: I am not affiliated with i66 or VDOT in any way. I'm just some guy who doesnt like using the website. So I can't make any assurances you will pay what you see in this CLI, it's just relaying what it gets from the (undocumented) API.

Demo

How the toll works (in my understanding)

There are 3-4 tolling segments in each direction. The price you pay for driving on a segment is locked in when you enter that segment. This may give you the impression your toll price is locked in when you enter i66. In fact, if you enter on segment 1 the toll for segment 2 can still change while you're driving on segment 1. This is why it's impossible to know your entire toll before you enter i66. And why, in my view, this tolling system should be illegal. The tills provided by the website and this command line tool can only be estimates because it’s physically impossible to enter all 3-4 segments at the same time.

There are more exits and entries than segments. The 3 segments are shown in this graphic

I-66 toll segments

Eastbound segments (AM commute):

  • Segment 1: From I-495 to the Dulles Connector Road (Exit 67).
  • Segment 2: From the Dulles Connector Road to Fairfax Drive (Exit 71).
  • Segment 3: From Fairfax Drive to US 29 in Rosslyn.

Westbound segments (PM commute):

  • Segment 1A: From US 29 in Rosslyn to Glebe Road (Exit 72).
  • Segment 1B: From Glebe Road to the Dulles Connector Road (Exit 67).
  • Segment 2: From the Dulles Connector Road to Sycamore Street.
  • Segment 3: From Sycamore Street to I-495.

They are supposed to show you your toll before you enter each segment, but as we all know the signs are broken half the time. So there's often no way for you to know how much you're paying before or during your commute.

Requirements

Install

From PyPI:

pip install i66tolls

From source:

pip install -e .

Interactive mode

i66tolls
  1. Direction — current, eastbound, or westbound
    • current uses the system clock. If no toll period is active, prints a message and exits.
    • Eastbound/westbound continues to entry selection for that direction.
  2. Entry — choose an entry interchange
  3. Exit — choose an exit interchange
  4. Whencurrent estimate or historic (skipped if you already chose current estimate in step 1)
  5. Date/time — for historic lookups, an interactive date/time picker (its-a-dt)

Use ↑/↓ and Enter to select. Press to go back to the previous step (even for values pre-filled from the command line).

Provide arguments to skip interactive steps

Provide entry and exit IDs (and any other options) to skip prompts:

i66tolls 1 10 -c
i66tolls 1 10 --current
i66tolls 16 1 -w -c
i66tolls 1 10 -t "06/10/2026 08:00 AM"

When both entry and exit are given, direction is inferred automatically.

Options

Flag Description
-e, --eastbound Eastbound route
-w, --westbound Westbound route
-c, --current Use the current toll rate
-t, --time Historic date/time (MM/DD/YYYY HH:MM AM/PM, US/Eastern)

Conflicts

  • --eastbound and --westbound cannot be used together
  • --current and --time cannot be used together
  • Provide both entry and exit IDs, or neither

Toll hours

Direction Hours
Eastbound (toward DC) Weekdays 5:30–9:30 AM
Westbound (toward Beltway) Weekdays 3:00–7:00 PM

Outside these windows, current tolls show as unavailable. Federal holidays are also toll-free.

Entry and exit IDs

Run i66tolls and browse the interactive lists, or query the API directly:

curl -s "https://vai66tolls.com/Index?handler=BeginIntPartial&rbEastVal=true" | grep option
curl -s "https://vai66tolls.com/Index?handler=ExitIntPartial&bIntId=1&rbEastVal=true" | grep option

Data source

This tool uses the same backend API as vai66tolls.com. Amounts are estimates and can change before you reach the road.

The old public endpoint you might see in other projects is no longer available. Maybe they were hitting it too hard, who knows.

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

i66tolls-0.2.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

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

i66tolls-0.2.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file i66tolls-0.2.0.tar.gz.

File metadata

  • Download URL: i66tolls-0.2.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for i66tolls-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9fda3ad46e230719654a4ca264546f99cadf842ca343bc3c50914f3a543f5f1f
MD5 4fb57a7d01bc850ddc48f6c2fe176a2d
BLAKE2b-256 a0d777bb6364dca89497c57d0c9ed1c10038fb7616d4ecda103020b5a73df450

See more details on using hashes here.

Provenance

The following attestation bundles were made for i66tolls-0.2.0.tar.gz:

Publisher: publish.yml on alanjschoen/i66tolls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file i66tolls-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: i66tolls-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for i66tolls-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 16f1f848eec1f47cca812805a43667e3cfe4d1abd8ff1f21727980450bc03291
MD5 17e3bf56cab19a23c50ed337f3e8c511
BLAKE2b-256 c6d23ebb4749f113b9eb8135f296a1bd17d932862734c071c1bf59a74c547b8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for i66tolls-0.2.0-py3-none-any.whl:

Publisher: publish.yml on alanjschoen/i66tolls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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