UNPKG

finra-broker-check

Version:

Programmatically run searches against FINRA's Brokercheck database for acquiring Licensed Rep and Brokerage Firm data. I didn't see any documentation for their API, so I figured I'd try my hand at making a wrapper for their search tool. Users are able to

113 lines (82 loc) 3 kB
createBrokerCheck = () =>{ const BrokerCheck = { endpoint : 'https://doppler.finra.org/doppler-lookup/api/v1/search/', createBroker : require('./broker.js'), createRepresenative : require('./representative.js'), rawParameters : {}, translateParameters : (prettyParameters) =>{ const rawParameters = { query : prettyParameters.query, city : prettyParameters.city, state : prettyParameters.state, nrows : prettyParameters.limit > 0 ? prettyParameters.limit : 10, start : prettyParameters.offset > 0 ? prettyParameters.offset : 0, r : prettyParameters.radius > 0 ? prettyParameters.radius : 25, sort : prettyParameters.sortBy != undefined ? prettyParameters.sortBy : 'score+desc', } for(key in rawParameters){ if(rawParameters[key] === undefined){ delete rawParameters[key]; } } return rawParameters; }, generateQueryURL : (parameters,searchType,queryURL) =>{ queryURL += searchType + '?'; for(key in parameters){ if (parameters[key]) { queryURL += key + '=' + parameters[key] + '&'; } } return queryURL; }, queryFirms : function(parameters, callback) { const Request = require('request'); const rawParameters = this.translateParameters(parameters); const queryURL = this.generateQueryURL(rawParameters,'firms',this.endpoint); Request(queryURL, (error, response, data) =>{ if(error){ console.log('An error occurred when using the following queryurl:\n' + queryURL); console.log('Error: ' + error); console.log('Response: ' + response); return; } else{ if(data!=null){ const rawResultArray = JSON.parse(data).results.BROKER_CHECK_FIRM.results; const parsedBrokers = rawResultArray.map((broker) => { return createBroker(broker.fields)}); callback(parsedBrokers); } else{ console.log('No results found'); } } }); }, queryIndividuals : function(parameters, callback){ const Request = require('request'); const rawParameters = this.translateParameters(parameters); const queryURL = this.generateQueryURL(rawParameters,'individuals',this.endpoint); Request(queryURL, (error, response, data) => { if(error){ console.log('An error occurred when using the following queryurl:\n' + queryURL); console.log('Error: ' + error); console.log('Response: ' + response); return; } else{ if(data!=null){ const rawResultArray = JSON.parse(data).results.BROKER_CHECK_REP.results; const parsedRepresentatives = rawResultArray.map((representative) => { return createRepresentative(representative.fields)}); callback(parsedRepresentatives); } else{ console.log('No results found'); } } }); }, } return BrokerCheck; } module.exports = createBrokerCheck;