A NodeJS module to easily execute arbitrary AppleScript code on Mac OS X.
Switch branches/tags
Latest commit 24c5b54 Jan 28, 2015 @TooTallNate v1.0.0
Failed to load latest commit information.
lib fix arg order Jan 3, 2015
samples If an error is returned from the AppleScript, then the offending code… Sep 4, 2010
.gitignore Initial commit. Aug 5, 2010
History.md v1.0.0 Jan 28, 2015
LICENSE Add MIT license. Aug 21, 2010
package.json v1.0.0 Jan 28, 2015



A high-level way to execute AppleScript code through NodeJS, and retrieve the result as a native JavaScript object. Underneath the hood, this module is just a simple wrapper around the OS X osascript command.


AppleScripts are the only way to communicate and interact with certain external OS X processes, for example iTunes.

Easy Install

$ npm install applescript


  • Mac (or Hackintosh) running OS X (tested with Snow Leopard)
  • NodeJS (v0.2.0 or newer)


The node-applescript module provides execString and execFile functions to easily execute AppleScript commands and buffer the output into a calback.

var applescript = require('applescript');

// Very basic AppleScript command. Returns the song name of each
// currently selected track in iTunes as an 'Array' of 'String's.
var script = 'tell application "iTunes" to get name of selection';

applescript.execString(script, function(err, rtn) {
  if (err) {
    // Something went wrong!
  if (Array.isArray(rtn)) {
    rtn.forEach(function(songName) {

execFile works the exact same way, except you pass the path of the AppleScript (*.applescript) file as the first argument instead of the command itself, and you may pass an optional Array of String arguments to send to the applescript file.


The node-applescript module is licensed under the MIT license, of course!