This site has facilities for querying data on an automated basis, in a machine parsable format.
There is documentation for the following interfaces:

queryexchangevalid - This is a simple flat text file giving "title=data" type formats. This is intended mostly for verifying an exchange is valid.
queryexchangexml - This is a similar interface, designed for retrieving data on a single exchange. Returns data in XML format.
queryareacodexml - This is a mass transfer interface, the information this gives is in bulk quantities. It's preferred you cache it, but low volume pulls are probably okay. Data is returned in XML format.

queryexchangevalid

URL: /query/queryexchangevalid.html
Parameters:
	npa [required] - 3 digit "area code"
	nxx [required] - 3 digit exchange

Example: http://www.telcodata.us/query/queryexchangevalid.html?npa=248&nxx=455
Notes: Order of text may change. Treat as "variable=value" pairs. Don't be dependent on the order of the text in the returned data.

queryexchangexml

URL: /query/queryexchangexml.html
Parameters:
	npa [required] - 3 digit "area code"
	nxx [required] - 3 digit exchange

Example: http://www.telcodata.us/query/queryexchangexml.html?npa=248&nxx=455
Notes: Additional values may be returned in the future.

queryareacodexml

URL: /query/queryareacodexml.html
Parameters:
   npa [required] - 3 digit "area code"

Example: http://www.telcodata.us/query/queryareacodexml.html?npa=947
Notes: Additional values may be returned in the future.
Member of The Internet Defense League