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.
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 this module like any other npm package:
$ npm install ca-dmv-poller
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))
See the typescript type definitions.
Special Thanks to Michael Vartan and his tool, ca-dmv-poller, for inspiration and initial implementation of this app.