Looks like it can be done via WorldCat’s xisbn API.

My approach is something like this: foo:~ $ curl 'http://xisbn.worldcat.org/webservices/xid/isbn/0521288843?method=getMetadata&format=xml&fl=year,ed,title,author,publisher,city' which returns an XML block like the following:

<span class="text text_xml"><span class="meta meta_tag meta_tag_preprocessor meta_tag_preprocessor_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><?</span><span class="entity entity_name entity_name_tag entity_name_tag_xml">xml</span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_xml"> version</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>1.0<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_xml"> encoding</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>UTF-8<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">?></span></span>
<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">rsp</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">xmlns</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>http://worldcat.org/xid/isbn/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">stat</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>ok<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
      <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">isbn</span>   <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">year</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>1986<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">ed</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>11th printing.<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">title</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>Evolution and the theory of games<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span>  <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">author</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>John Maynard Smith.<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span>  <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">publisher</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>Cambridge Univ. Press<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span>  <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">city</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>Cambridge [u.a.]<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span>   <span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>0521288843<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"></</span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">isbn</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span></span>

A little XSLT, such as that below:

book2bib.xsl

<span class="linenum">    1</span> <span class="text text_xml text_xml_xsl"><span class="meta meta_tag meta_tag_preprocessor meta_tag_preprocessor_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><?</span><span class="entity entity_name entity_name_tag entity_name_tag_xml">xml</span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_xml"> version</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>1.0<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">?></span></span>
<span class="linenum">    2</span> <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">stylesheet</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_namespace entity_other_attribute-name_namespace_xml">xmlns</span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">xsl</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>http://www.w3.org/1999/XSL/Transform<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_namespace entity_other_attribute-name_namespace_xml">xmlns</span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">wc</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>http://worldcat.org/xid/isbn/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">version</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>1.0<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
<span class="linenum">    3</span>     <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">output</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">method</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>text<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">omit-xml-declaration</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>yes<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">indent</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>no<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>
<span class="linenum">    4</span>     <span class="meta meta_tag meta_tag_xml meta_tag_xml_template"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">template</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">match</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>wc:isbn<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
<span class="linenum">    5</span>         <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">code</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
<span class="linenum">    6</span>     @BOOK{CiteKeyGoesHere,
<span class="linenum">    7</span>         AUTHOR = "<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">value-of</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">select</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>@author<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>",
<span class="linenum">    8</span>         TITLE = "<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">value-of</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">select</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>@title<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>",
<span class="linenum">    9</span>         PUBLISHER = "<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">value-of</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">select</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>@publisher<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>",
<span class="linenum">   10</span>         ADDRESS = "<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">value-of</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">select</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>@city<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>",
<span class="linenum">   11</span>         YEAR ="<span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"><</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">value-of</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_localname entity_other_attribute-name_localname_xml">select</span>=<span class="string string_quoted string_quoted_double string_quoted_double_xml"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_xml">"</span>@year<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_xml">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">/></span></span>"}
<span class="linenum">   12</span> <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"></</span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">code</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
<span class="linenum">   13</span>     <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"></</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">template</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
<span class="linenum">   14</span> <span class="meta meta_tag meta_tag_xml"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml"></</span><span class="entity entity_name entity_name_tag entity_name_tag_namespace entity_name_tag_namespace_xml">xsl</span><span class="entity entity_name entity_name_tag entity_name_tag_xml"><span class="punctuation punctuation_separator punctuation_separator_namespace punctuation_separator_namespace_xml">:</span></span><span class="entity entity_name entity_name_tag entity_name_tag_localname entity_name_tag_localname_xml">stylesheet</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_xml">></span></span>
</span><span class="linenum">   15</span>

…emits the following:

@BOOK{CiteKeyGoesHere, AUTHOR = "John Maynard Smith.", TITLE = "Evolution and the theory of games", PUBLISHER = "Cambridge Univ. Press", ADDRESS = "Cambridge [u.a.]", YEAR ="1986"}

The user will need to supply her own citation key, but many bibliography management tools (such as BibDesk) will do this, or you can use the bibtexformat perl script to insert them for you.

Here’s the whole deal in action. Creating a shell script which takes the ISBN as a parameter and plugs it into something like the following is left as an exercise for the reader. $ curl -s 'http://xisbn.worldcat.org/webservices/xid/isbn/0521288843?method=getMetadata&format=xml&fl=year,ed,title,author,publisher,city' | xsltproc ~/Dev/book2bib.xsl -

@BOOK{CiteKeyGoesHere, AUTHOR = “John Maynard Smith.”, TITLE = “Evolution and the theory of games”, PUBLISHER = “Cambridge Univ. Press”, ADDRESS = “Cambridge [u.a.]”, YEAR =”1986”}