title: Is there an API for searching Stock Symbols based on Company Names?
body: <p>This is a similar question to <a href="https://stackoverflow.com/questions/885456/stock-ticker-symbol-lookup-api">Stock ticker symbol lookup API</a>  however that was never answered to the standard I think is needed for a commercial application.</p>
  
  <p>The problem is this: <strong>Given a company name, partial name, or stock symbol, return a list of possible symbol matches.</strong></p>
  
  <p>So for example:  </p>
  
  <pre><code>"microsoft" =&gt; "MSFT", "...",  ...  
  "aapl" =&gt; "AAPL", "...", ...  
  "goo" =&gt; "GOOG", "...", ...  
  </code></pre>
  
  <p>I have used <code>"..."</code> to mean another result of secondary importance.</p>
  
  <p>In the question I linked to, there was, as far as I can tell, only 1 actual answer, and many people totally misunderstanding the question. <em>I do not want stock data, prices, or anything like that!</em> The one answer that is addressing the correct issue looks like it is a very private API and one that could break at any time. The exact callback used by the website must be used or else it doesn't appear to work. It also only works in JSON format and not XML which I would prefer if possible.</p>
  
  <p>There are 3 things that I am considering at the moment, and I would appreciate any feedback on these, or suggestions of others:</p>
  
  <ul>
  <li>Use SPARQL to query <a href="http://dbpedia.org" rel="nofollow noreferrer">DBPedia</a> and the "Traded As" fields in boxes on Wikipedia, this data is relatively unstructured, incomplete or inconsistent. I also haven't used SPARQL before so it might be a challenge.</li>
  <li>Construct a virtual table for use with the Yahoo Query Language that actually screen scrapes the Yahoo website (or another) but provides a 'good' interface to allow me to change the backend data without re-distributing the application (for example if Yahoo change their site). This has the added benefit that I already have code for dealing with YQL+XML.</li>
  <li>Simply screen-scrape data from within my application from sites that allow it in their terms of use.</li>
  </ul>
  
  <p>Screen-scraping feels like a hack, and feels like it could be broken very easily, so I am reluctant to do the latter two options, however having had a look at the data on DBPedia with a test query, it seems like it is really terrible and might well not be of any use at all.</p>
  
  <p><strong>Summary</strong>: I need a <em>reliable</em> API for getting stock symbols for company names.</p>
  
  <p><strong>Edit</strong>: This does not have to be a Yahoo API at all. I would prefer to use them if possible, but only because of other code using their services.</p>