##About
###Description A nodejs module for interacting with the Quandl API.
###Author Norman Joyner - norman.joyner@gmail.com
##Getting Started
###Installation
npm install quandl
###Configuration Simply require the quandl module, instantiate a new Quandl object, configure it if necessary, and start making calls. The auth token and api version are configurable.
New Quandl objects can be instantiated with configuration parameters. Here is an example:
var Quandl = require("quandl");
var quandl = new Quandl({
auth_token: "dsahFHUiewjjd",
api_version: 3,
proxy: "http://myproxy:3128"
});
Quandl objects can also be configured via the .configure(options)
method. Here is an exmaple:
var Quandl = require("quandl");
var quandl = new Quandl();
var options = {
auth_token: "dsahFHUiewjjd"
}
quandl.configure(options);
The auth_token parameter defaults to undefined (anonymous access). Be aware of the Quandl Usage Rules. The api_version parameter defaults to 3, for v3 api access. The proxy parameter routes all requests through the specfied proxy.
###Supported API versions
- v1
- v3
###Supported API Methods
###Examples Fetch Mt. Gox Bitcoin dataset, and print response:
quandl.dataset({ source: "BITCOIN", table: "MTGOXUSD" }, function(err, data){
if(err)
throw err;
console.log(data);
});
Fetch dataset metadata, and print response:
quandl.metadata({ source: "ZILLOW", table: "ZIP_ALLHOMES_15235" }, function(err, data){
if(err)
throw err;
console.log(data);
});
Search for datasets pertaining to "crude oil", and print xml response:
quandl.search("crude oil", { format: "xml" }, function(err, data){
console.log(err);
console.log(data);
});
Response status, headers, etc. can be obtained by specifying a third parameter in the callback (see http.IncomingMessage):
quandl.dataset({ source: "BITCOIN", table: "MTGOXUSD" }, function(err, data, response){
if(err)
throw err;
if (response.statusCode === 200){
console.log(data);
} else {
console.error(response.statusCode, response.statusMessage, data);
}
});
###Passing Search Parameters It's possible to make simple transformations of the data prior to retrieving it. For example, you can trim the data by excluding certain fields, slice the data using start and end dates, and even sort the data in ascending or descending order.
In the following example, only the closing prices for Facebook between January 30, 2015 and January 29, 2016 are retrieved. In this case, the closing prices are presented in ascending order.
var quandl = new Quandl({
auth_token: "MY API TOKEN",
api_version: 3
});
quandl.dataset({
source: "WIKI",
table: "FB"
}, {
order: "asc",
exclude_column_names: true,
// Notice the YYYY-MM-DD format
start_date: "2015-01-30",
end_date: "2016-01-29",
column_index: 4
}, function(err, data){
if(err)
throw err;
console.log(data);
});
You can customize the dataset object by adding extra parameters. For more information about these optional parameters, please take a look at Quandl's API Docs.
If you don't want to hard code the start and/or end dates, use Moment to capture and manipulate the current date and time.
###Promise interface
All methods can return a promise (Node 0.12 or above) if the callback function is omitted from the arguments. Any success handler will receive an array in the format [data, response]
.
var promise = quandl.dataset({ source: "WIKI", table: "FB" });
promise.then(function(responseArray){
var data = responseArray[0], response = responseArray[1];
// Non-2xx responses will not reject the promise by default, they must be handled manually:
if (response.statusCode !== 200)
throw responseArray;
console.log(data);
}).catch(function(err){
console.error(err);
});
// Node 6+ can use this syntax:
promise.then(([data, response]) => {
// ...
});
This also allows the methods to be compatible with co
as well as the upcoming "async/await" syntax when it is introduced into Node.
###Running Tests
npm test