Skip to content

A tool to poll multiple DMV locations and find the earliest available appointment time.

Notifications You must be signed in to change notification settings

nklayman/ca-dmv-poller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This tool is deprecated, and no longer works

Unfortunately, due to changes with the DMV appointent registration system, this tool no longer works. They make use of session cookies which I can't figure out how to mock properly. If you figure out how to make this work, please submit a PR, I would really appreciate it.

CA DMV Poller

A developer API to access the CA DMV appointment system

NOTE: This is a developer API. Use CA DMV Appointment FastFinder, an Android app, if you just want to get an appointment.

Install

Install this module like any other npm package:

$ npm install ca-dmv-poller

Usage

const Poller = require('ca-dmv-poller')

const poller = new Poller({
  itemsToProcess: 1, // Number of items user would like to process
  maxDistanceMiles: 15, // Distance from home location to search for DMV Offices

  // Provide zipCode, coords, or address
  zipCode: '95630', // or
  coords: {
    lat: '38.733792',
    lng: '-121.141315'
  }, // or
  address: '1600 Amphitheatre Pkwy, Mountain View, CA 94043',

  mode: 'OfficeVisit', // or 'DriveTest'
  // CID: Apply for, replace, or renew a California DL/ID
  // RID: Apply for, replace, or renew a REAL ID
  // VR: Register or title a vehicle or vessel (boat)
  appointmentTypes: ['CID'],
  // User's appointment information
  appointmentInfo: {
    firstName: 'John',
    lastName: 'Doe',
    telArea: 123,
    telPrefix: 456,
    telSuffix: 7890,
    birthDay: '01',
    birthMonth: '01',
    birthYear: '2001',
    dlNumber: 'I0004567', // AKA Permit Number
    requestedTask: 'DT', // (automobile) or 'MC' (motorcycle),
    safetyCourseCompletedSelection: 'TRUE' // or 'FALSE', motorcycle test only
  }
})

poller
  .check()
  .then(results => {
    results.forEach(result => {
      // See src/types/index.ts for all the properties of the results object
      if (result.hasFailed) {
        console.log(
          `The request to ${result.location} (id ${
            result.id
          }) failed because: ${result.cause}`
        )
        return
      }
      console.log('Day of appointment: ', result.date)
      console.log('Days until appointment: ', result.daysUntil)
      console.log('Location of appointment: ', result.location)
    })
  })
  .catch(e => console.error(e))

API

See the typescript type definitions.

Special Thanks to Michael Vartan and his tool, ca-dmv-poller, for inspiration and initial implementation of this app.

About

A tool to poll multiple DMV locations and find the earliest available appointment time.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages