CINXE.COM
API
<!DOCTYPE html> <html class="desktop withSiteHeaderTopFullImage "> <head> <title>API</title> <meta content='The Goodreads API allows developers access to Goodreads data in order to help websites or applications that deal with books be more personalized, social,...' name='description'> <meta content='telephone=no' name='format-detection'> <link href='https://www.goodreads.com/api/index' rel='canonical'> <!-- * Copied from https://info.analytics.a2z.com/#/docs/data_collection/csa/onboard */ --> <script> //<![CDATA[ !function(){function n(n,t){var r=i(n);return t&&(r=r("instance",t)),r}var r=[],c=0,i=function(t){return function(){var n=c++;return r.push([t,[].slice.call(arguments,0),n,{time:Date.now()}]),i(n)}};n._s=r,this.csa=n}(); if (window.csa) { window.csa("Config", { "Application": "GoodreadsMonolith", "Events.SushiEndpoint": "https://unagi.amazon.com/1/events/com.amazon.csm.csa.prod", "Events.Namespace": "csa", "CacheDetection.RequestID": "SFQ01ATZST8R8RFGX8XH", "ObfuscatedMarketplaceId": "A1PQBFHBHS6YH1" }); window.csa("Events")("setEntity", { session: { id: "689-2832814-4064314" }, page: {requestId: "SFQ01ATZST8R8RFGX8XH", meaningful: "interactive"} }); } var e = document.createElement("script"); e.src = "https://m.media-amazon.com/images/I/41mrkPcyPwL.js"; document.head.appendChild(e); //]]> </script> <script type="text/javascript"> if (window.Mobvious === undefined) { window.Mobvious = {}; } window.Mobvious.device_type = 'desktop'; </script> <script src="https://s.gr-assets.com/assets/webfontloader-3aab2cc7a05633c1664e2b307cde7dec.js"></script> <script> //<![CDATA[ WebFont.load({ classes: false, custom: { families: ["Lato:n4,n7,i4", "Merriweather:n4,n7,i4"], urls: ["https://s.gr-assets.com/assets/gr/fonts-e256f84093cc13b27f5b82343398031a.css"] } }); //]]> </script> <link rel="stylesheet" media="all" href="https://s.gr-assets.com/assets/goodreads-e885b69aa7e6b55052557e48fb5e6ae6.css" /> <link rel="stylesheet" media="screen" href="https://s.gr-assets.com/assets/common_images-f5630939f2056b14f661a80fa8503dca.css" /> <script src="https://s.gr-assets.com/assets/desktop/libraries-c07ee2e4be9ade4a64546b3ec60b523b.js"></script> <script src="https://s.gr-assets.com/assets/application-c9ca2b0a96b7d9468fe67c9b30eec3fc.js"></script> <script> //<![CDATA[ var gptAdSlots = gptAdSlots || []; var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement("script"); gads.async = true; gads.type = "text/javascript"; var useSSL = "https:" == document.location.protocol; gads.src = (useSSL ? "https:" : "http:") + "//securepubads.g.doubleclick.net/tag/js/gpt.js"; var node = document.getElementsByTagName("script")[0]; node.parentNode.insertBefore(gads, node); })(); // page settings //]]> </script> <script> //<![CDATA[ googletag.cmd.push(function() { googletag.pubads().setTargeting("sid", "osid.8eca28f3b75dc5c6833757229511b7c6"); googletag.pubads().setTargeting("grsession", "osid.8eca28f3b75dc5c6833757229511b7c6"); googletag.pubads().setTargeting("surface", "desktop"); googletag.pubads().setTargeting("signedin", "false"); googletag.pubads().setTargeting("gr_author", "false"); googletag.pubads().setTargeting("author", []); googletag.pubads().enableAsyncRendering(); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(true); googletag.pubads().disableInitialLoad(); googletag.enableServices(); }); //]]> </script> <script> //<![CDATA[ ! function(a9, a, p, s, t, A, g) { if (a[a9]) return; function q(c, r) { a[a9]._Q.push([c, r]) } a[a9] = { init: function() { q("i", arguments) }, fetchBids: function() { q("f", arguments) }, setDisplayBids: function() {}, _Q: [] }; A = p.createElement(s); A.async = !0; A.src = t; g = p.getElementsByTagName(s)[0]; g.parentNode.insertBefore(A, g) }("apstag", window, document, "script", "//c.amazon-adsystem.com/aax2/apstag.js"); apstag.init({ pubID: '3211', adServer: 'googletag', bidTimeout: 4e3, deals: true, params: { aps_privacy: '1YN' } }); //]]> </script> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="EYAwwb6EGiHaBHEdscaaEEhKxAVDyJrm/KQygpqDqmNPVdXcIQCXI/gqPt4EqNJwAQ+JwkG1X4plpJd6pv8Ymw==" /> <meta name="request-id" content="SFQ01ATZST8R8RFGX8XH" /> <script src="https://s.gr-assets.com/assets/react_client_side/external_dependencies-2e2b90fafc.js" defer="defer"></script> <script src="https://s.gr-assets.com/assets/react_client_side/site_header-db7e725a27.js" defer="defer"></script> <script src="https://s.gr-assets.com/assets/react_client_side/custom_react_ujs-b1220d5e0a4820e90b905c302fc5cb52.js" defer="defer"></script> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Goodreads"> <meta name="description" content="The Goodreads API allows developers access to Goodreads data in order to help websites or applications that deal with books be more personalized, social,..."> <meta content='summary' name='twitter:card'> <meta content='@goodreads' name='twitter:site'> <meta content='API' name='twitter:title'> <meta content='The Goodreads API allows developers access to Goodreads data in order to help websites or applications that deal with books be more personalized, social,...' name='twitter:description'> <meta name="verify-v1" content="cEf8XOH0pulh1aYQeZ1gkXHsQ3dMPSyIGGYqmF53690="> <meta name="google-site-verification" content="PfFjeZ9OK1RrUrKlmAPn_iZJ_vgHaZO1YQ-QlG2VsJs" /> <meta name="apple-itunes-app" content="app-id=355833469"> </head> <body class=""> <script src="https://s.gr-assets.com/assets/fb_dep_form-e2e4a0d9dc062011458143c32b2d789b.js"></script> <div class="content" id="bodycontainer" style=""> <script> //<![CDATA[ var initializeGrfb = function() { $grfb.initialize({ appId: "2415071772" }); }; if (typeof $grfb !== "undefined") { initializeGrfb(); } else { window.addEventListener("DOMContentLoaded", function() { if (typeof $grfb !== "undefined") { initializeGrfb(); } }); } //]]> </script> <script> //<![CDATA[ function loadScript(url, callback) { var script = document.createElement("script"); script.type = "text/javascript"; if (script.readyState) { //Internet Explorer script.onreadystatechange = function() { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; callback(); } }; } else { //Other browsers script.onload = function() { callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } function initAppleId() { AppleID.auth.init({ clientId : 'com.goodreads.app', scope : 'name email', redirectURI: 'https://www.goodreads.com/apple_users/sign_in_with_apple_web', state: 'apple_oauth_state_da0f6638-99b6-48b1-ba2c-a14a5a07ecda' }); } var initializeSiwa = function() { var APPLE_SIGN_IN_JS_URL = "https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js" loadScript(APPLE_SIGN_IN_JS_URL, initAppleId); }; if (typeof AppleID !== "undefined") { initAppleId(); } else { initializeSiwa(); } //]]> </script> <div class='siteHeader'> <div data-react-class="ReactComponents.HeaderStoreConnector" data-react-props="{"myBooksUrl":"/review/list?ref=nav_mybooks","browseUrl":"/book?ref=nav_brws","recommendationsUrl":"/recommendations?ref=nav_brws_recs","choiceAwardsUrl":"/choiceawards?ref=nav_brws_gca","genresIndexUrl":"/genres?ref=nav_brws_genres","giveawayUrl":"/giveaway?ref=nav_brws_giveaways","exploreUrl":"/book?ref=nav_brws_explore","homeUrl":"/?ref=nav_home","listUrl":"/list?ref=nav_brws_lists","newsUrl":"/news?ref=nav_brws_news","communityUrl":"/group?ref=nav_comm","groupsUrl":"/group?ref=nav_comm_groups","quotesUrl":"/quotes?ref=nav_comm_quotes","featuredAskAuthorUrl":"/ask_the_author?ref=nav_comm_askauthor","autocompleteUrl":"/book/auto_complete","defaultLogoActionUrl":"/","topFullImage":{"clickthroughUrl":"https://www.goodreads.com/blog/show/2851?ref=RCShrtBks24_eb","altText":"Short books to help you finish your Reading Challenge strong","backgroundColor":"#732150","xs":{"1x":"https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233161i/479.jpg","2x":"https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233166i/480.jpg"},"md":{"1x":"https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233150i/477.jpg","2x":"https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233155i/478.jpg"}},"logo":{"clickthroughUrl":"/","altText":"Goodreads Home"},"searchPath":"/search","newReleasesUrl":"/book/popular_by_date/2024/11?ref=nav_brws_newrels","signInUrl":"/user/sign_in","signUpUrl":"/user/sign_up","signInWithReturnUrl":true,"deployServices":[],"defaultLogoAltText":"Goodreads Home","mobviousDeviceType":"desktop"}"><header data-reactid=".361f62waka" data-react-checksum="1786323585"><div class="siteHeader__topFullImageContainer" style="background-color:#732150;" data-reactid=".361f62waka.0"><a class="siteHeader__topFullImageLink" href="https://www.goodreads.com/blog/show/2851?ref=RCShrtBks24_eb" data-reactid=".361f62waka.0.0"><picture data-reactid=".361f62waka.0.0.0"><source media="(min-width: 768px)" srcset="https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233150i/477.jpg 1x, https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233155i/478.jpg 2x" data-reactid=".361f62waka.0.0.0.0"/><img alt="Short books to help you finish your Reading Challenge strong" class="siteHeader__topFullImage" src="https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233161i/479.jpg" srcset="https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/siteheaderbannerimages/1732233166i/480.jpg 2x" data-reactid=".361f62waka.0.0.0.1"/></picture></a></div><div class="siteHeader__topLine gr-box gr-box--withShadow" data-reactid=".361f62waka.1"><div class="siteHeader__contents" data-reactid=".361f62waka.1.0"><div class="siteHeader__topLevelItem siteHeader__topLevelItem--searchIcon" data-reactid=".361f62waka.1.0.0"><button class="siteHeader__searchIcon gr-iconButton" aria-label="Toggle search" type="button" data-ux-click="true" data-reactid=".361f62waka.1.0.0.0"></button></div><a href="/" class="siteHeader__logo" aria-label="Goodreads Home" title="Goodreads Home" data-reactid=".361f62waka.1.0.1"></a><nav class="siteHeader__primaryNavInline" data-reactid=".361f62waka.1.0.2"><ul role="menu" class="siteHeader__menuList" data-reactid=".361f62waka.1.0.2.0"><li class="siteHeader__topLevelItem siteHeader__topLevelItem--home" data-reactid=".361f62waka.1.0.2.0.0"><a href="/?ref=nav_home" class="siteHeader__topLevelLink" data-reactid=".361f62waka.1.0.2.0.0.0">Home</a></li><li class="siteHeader__topLevelItem" data-reactid=".361f62waka.1.0.2.0.1"><a href="/review/list?ref=nav_mybooks" class="siteHeader__topLevelLink" data-reactid=".361f62waka.1.0.2.0.1.0">My Books</a></li><li class="siteHeader__topLevelItem" data-reactid=".361f62waka.1.0.2.0.2"><div class="primaryNavMenu primaryNavMenu--siteHeaderBrowseMenu ignore-react-onclickoutside" data-reactid=".361f62waka.1.0.2.0.2.0"><a class="primaryNavMenu__trigger primaryNavMenu__trigger--siteHeaderBrowseMenu" href="/book?ref=nav_brws" role="button" aria-haspopup="true" aria-expanded="false" data-ux-click="true" data-reactid=".361f62waka.1.0.2.0.2.0.0"><span data-reactid=".361f62waka.1.0.2.0.2.0.0.0">Browse ▾</span></a><div class="primaryNavMenu__menu gr-box gr-box--withShadowLarge wide" role="menu" data-reactid=".361f62waka.1.0.2.0.2.0.1"><div class="siteHeader__browseMenuDropdown" data-reactid=".361f62waka.1.0.2.0.2.0.1.0"><ul class="siteHeader__subNav" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0"><li role="menuitem Recommendations" class="menuLink" aria-label="Recommendations" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.0"><a href="/recommendations?ref=nav_brws_recs" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.0.0">Recommendations</a></li><li role="menuitem Choice Awards" class="menuLink" aria-label="Choice Awards" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.1"><a href="/choiceawards?ref=nav_brws_gca" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.1.0">Choice Awards</a></li><li role="menuitem Genres" class="menuLink" aria-label="Genres" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.2"><a href="/genres?ref=nav_brws_genres" class="siteHeader__subNavLink siteHeader__subNavLink--genresIndex" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.2.0">Genres</a></li><li role="menuitem Giveaways" class="menuLink" aria-label="Giveaways" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.3"><a href="/giveaway?ref=nav_brws_giveaways" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.3.0">Giveaways</a></li><li role="menuitem New Releases" class="menuLink" aria-label="New Releases" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.4"><a href="/book/popular_by_date/2024/11?ref=nav_brws_newrels" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.4.0">New Releases</a></li><li role="menuitem Lists" class="menuLink" aria-label="Lists" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.5"><a href="/list?ref=nav_brws_lists" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.5.0">Lists</a></li><li role="menuitem Explore" class="menuLink" aria-label="Explore" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.6"><a href="/book?ref=nav_brws_explore" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.6.0">Explore</a></li><li role="menuitem News & Interviews" class="menuLink" aria-label="News & Interviews" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.7"><a href="/news?ref=nav_brws_news" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.0.7.0">News & Interviews</a></li></ul><div class="siteHeader__spotlight siteHeader__spotlight--withoutSubMenu" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1"><div class="genreListContainer" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0"><div class="siteHeader__heading siteHeader__title" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.0">Genres</div><ul class="genreList" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Art"><a href="/genres/art" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Art.0">Art</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Biography"><a href="/genres/biography" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Biography.0">Biography</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Business"><a href="/genres/business" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Business.0">Business</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Children's"><a href="/genres/children-s" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Children's.0">Children's</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Christian"><a href="/genres/christian" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Christian.0">Christian</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Classics"><a href="/genres/classics" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Classics.0">Classics</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Comics"><a href="/genres/comics" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Comics.0">Comics</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Cookbooks"><a href="/genres/cookbooks" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Cookbooks.0">Cookbooks</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Ebooks"><a href="/genres/ebooks" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Ebooks.0">Ebooks</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Fantasy"><a href="/genres/fantasy" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList0.0:$Fantasy.0">Fantasy</a></li></ul><ul class="genreList" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Fiction"><a href="/genres/fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Fiction.0">Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Graphic Novels"><a href="/genres/graphic-novels" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Graphic Novels.0">Graphic Novels</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Historical Fiction"><a href="/genres/historical-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Historical Fiction.0">Historical Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$History"><a href="/genres/history" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$History.0">History</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Horror"><a href="/genres/horror" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Horror.0">Horror</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Memoir"><a href="/genres/memoir" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Memoir.0">Memoir</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Music"><a href="/genres/music" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Music.0">Music</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Mystery"><a href="/genres/mystery" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Mystery.0">Mystery</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Nonfiction"><a href="/genres/non-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Nonfiction.0">Nonfiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Poetry"><a href="/genres/poetry" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList1.0:$Poetry.0">Poetry</a></li></ul><ul class="genreList" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Psychology"><a href="/genres/psychology" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Psychology.0">Psychology</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Romance"><a href="/genres/romance" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Romance.0">Romance</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Science"><a href="/genres/science" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Science.0">Science</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Science Fiction"><a href="/genres/science-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Science Fiction.0">Science Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Self Help"><a href="/genres/self-help" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Self Help.0">Self Help</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Sports"><a href="/genres/sports" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Sports.0">Sports</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Thriller"><a href="/genres/thriller" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Thriller.0">Thriller</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Travel"><a href="/genres/travel" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Travel.0">Travel</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Young Adult"><a href="/genres/young-adult" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.0:$Young Adult.0">Young Adult</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.1"><a href="/genres" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.2.0.2.0.1.0.1.0.1:$genreList2.1.0">More Genres</a></li></ul></div></div></div></div></div></li><li class="siteHeader__topLevelItem siteHeader__topLevelItem--community" data-reactid=".361f62waka.1.0.2.0.3"><div class="primaryNavMenu ignore-react-onclickoutside" data-reactid=".361f62waka.1.0.2.0.3.0"><a class="primaryNavMenu__trigger" href="/group?ref=nav_comm" role="button" aria-haspopup="true" aria-expanded="false" data-ux-click="true" data-reactid=".361f62waka.1.0.2.0.3.0.0"><span data-reactid=".361f62waka.1.0.2.0.3.0.0.0">Community ▾</span></a><div class="primaryNavMenu__menu gr-box gr-box--withShadowLarge" role="menu" data-reactid=".361f62waka.1.0.2.0.3.0.1"><ul class="siteHeader__subNav" data-reactid=".361f62waka.1.0.2.0.3.0.1.0"><li role="menuitem Groups" class="menuLink" aria-label="Groups" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.0"><a href="/group?ref=nav_comm_groups" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.0.0">Groups</a></li><li role="menuitem Quotes" class="menuLink" aria-label="Quotes" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.2"><a href="/quotes?ref=nav_comm_quotes" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.2.0">Quotes</a></li><li role="menuitem Ask the Author" class="menuLink" aria-label="Ask the Author" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.3"><a href="/ask_the_author?ref=nav_comm_askauthor" class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.2.0.3.0.1.0.3.0">Ask the Author</a></li></ul></div></div></li></ul></nav><div accept-charset="UTF-8" class="searchBox searchBox--navbar" data-reactid=".361f62waka.1.0.3"><form autocomplete="off" action="/search" class="searchBox__form" role="search" aria-label="Search for books to add to your shelves" data-reactid=".361f62waka.1.0.3.0"><input class="searchBox__input searchBox__input--navbar" autocomplete="off" name="q" type="text" placeholder="Search books" aria-label="Search books" aria-controls="searchResults" data-reactid=".361f62waka.1.0.3.0.0"/><input type="hidden" name="qid" value="" data-reactid=".361f62waka.1.0.3.0.1"/><button type="submit" class="searchBox__icon--magnifyingGlass gr-iconButton searchBox__icon searchBox__icon--navbar" aria-label="Search" data-reactid=".361f62waka.1.0.3.0.2"></button></form></div><ul class="siteHeader__personal" data-reactid=".361f62waka.1.0.4"><li class="siteHeader__topLevelItem siteHeader__topLevelItem--signedOut" data-reactid=".361f62waka.1.0.4.0"><a href="/user/sign_in?returnurl=undefined" rel="nofollow" class="siteHeader__topLevelLink" data-reactid=".361f62waka.1.0.4.0.0">Sign In</a></li><li class="siteHeader__topLevelItem siteHeader__topLevelItem--signedOut" data-reactid=".361f62waka.1.0.4.1"><a href="/user/sign_up" rel="nofollow" class="siteHeader__topLevelLink" data-reactid=".361f62waka.1.0.4.1.0">Join</a></li></ul><div class="siteHeader__topLevelItem siteHeader__topLevelItem--signUp" data-reactid=".361f62waka.1.0.5"><a href="/user/sign_up" class="gr-button gr-button--dark" rel="nofollow" data-reactid=".361f62waka.1.0.5.0">Sign up</a></div><div class="modal modal--overlay modal--drawer" tabindex="0" data-reactid=".361f62waka.1.0.7"><div data-reactid=".361f62waka.1.0.7.0"><div class="modal__close" data-reactid=".361f62waka.1.0.7.0.0"><button type="button" class="gr-iconButton" data-reactid=".361f62waka.1.0.7.0.0.0"><img alt="Dismiss" src="//s.gr-assets.com/assets/gr/icons/icon_close_white-dbf4152deeef5bd3915d5d12210bf05f.svg" data-reactid=".361f62waka.1.0.7.0.0.0.0"/></button></div><div class="modal__content" data-reactid=".361f62waka.1.0.7.0.1"><div class="personalNavDrawer" data-reactid=".361f62waka.1.0.7.0.1.0"><div class="personalNavDrawer__personalNavContainer" data-reactid=".361f62waka.1.0.7.0.1.0.0"><noscript data-reactid=".361f62waka.1.0.7.0.1.0.0.0"></noscript></div><div class="personalNavDrawer__profileAndLinksContainer" data-reactid=".361f62waka.1.0.7.0.1.0.1"><div class="personalNavDrawer__profileContainer gr-mediaFlexbox gr-mediaFlexbox--alignItemsCenter" data-reactid=".361f62waka.1.0.7.0.1.0.1.0"><div class="gr-mediaFlexbox__media" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.0"><img class="circularIcon circularIcon--large circularIcon--border" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.0.0"/></div><div class="gr-mediaFlexbox__desc" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.1"><a class="gr-hyperlink gr-hyperlink--bold" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.1.0"></a><div class="u-displayBlock" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.1.1"><a class="gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.1.0.7.0.1.0.1.0.1.1.0">View profile</a></div></div></div><div class="personalNavDrawer__profileMenuContainer" data-reactid=".361f62waka.1.0.7.0.1.0.1.1"><ul data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0"><li role="menuitem Profile" class="menuLink" aria-label="Profile" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.0"><span data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.0.0"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.0.0.0">Profile</a></span></li><li role="menuitem Friends" class="menuLink" aria-label="Friends" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.3"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.3.0">Friends</a></li><li role="menuitem Groups" class="menuLink" aria-label="Groups" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.4"><span data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.4.0"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.4.0.0"><span data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.4.0.0.0">Groups</span></a></span></li><li role="menuitem Discussions" class="menuLink" aria-label="Discussions" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.5"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.5.0">Discussions</a></li><li role="menuitem Comments" class="menuLink" aria-label="Comments" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.6"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.6.0">Comments</a></li><li role="menuitem Reading Challenge" class="menuLink" aria-label="Reading Challenge" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.7"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.7.0">Reading Challenge</a></li><li role="menuitem Kindle Notes & Highlights" class="menuLink" aria-label="Kindle Notes & Highlights" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.8"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.8.0">Kindle Notes & Highlights</a></li><li role="menuitem Quotes" class="menuLink" aria-label="Quotes" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.9"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.9.0">Quotes</a></li><li role="menuitem Favorite genres" class="menuLink" aria-label="Favorite genres" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.a"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.a.0">Favorite genres</a></li><li role="menuitem Friends' recommendations" class="menuLink" aria-label="Friends' recommendations" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.b"><span data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.b.0"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.b.0.0"><span data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.b.0.0.0">Friends’ recommendations</span></a></span></li><li role="menuitem Account settings" class="menuLink" aria-label="Account settings" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.c"><a class="siteHeader__subNavLink u-topGrayBorder" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.c.0">Account settings</a></li><li role="menuitem Help" class="menuLink" aria-label="Help" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.d"><a class="siteHeader__subNavLink" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.d.0">Help</a></li><li role="menuitem Sign out" class="menuLink" aria-label="Sign out" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.e"><a class="siteHeader__subNavLink" data-method="POST" data-reactid=".361f62waka.1.0.7.0.1.0.1.1.0.e.0">Sign out</a></li></ul></div></div></div></div></div></div></div></div><div class="headroom-wrapper" data-reactid=".361f62waka.2"><div style="position:relative;top:0;left:0;right:0;z-index:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);" class="headroom headroom--unfixed" data-reactid=".361f62waka.2.0"><nav class="siteHeader__primaryNavSeparateLine gr-box gr-box--withShadow" data-reactid=".361f62waka.2.0.0"><ul role="menu" class="siteHeader__menuList" data-reactid=".361f62waka.2.0.0.0"><li class="siteHeader__topLevelItem siteHeader__topLevelItem--home" data-reactid=".361f62waka.2.0.0.0.0"><a href="/?ref=nav_home" class="siteHeader__topLevelLink" data-reactid=".361f62waka.2.0.0.0.0.0">Home</a></li><li class="siteHeader__topLevelItem" data-reactid=".361f62waka.2.0.0.0.1"><a href="/review/list?ref=nav_mybooks" class="siteHeader__topLevelLink" data-reactid=".361f62waka.2.0.0.0.1.0">My Books</a></li><li class="siteHeader__topLevelItem" data-reactid=".361f62waka.2.0.0.0.2"><div class="primaryNavMenu primaryNavMenu--siteHeaderBrowseMenu ignore-react-onclickoutside" data-reactid=".361f62waka.2.0.0.0.2.0"><a class="primaryNavMenu__trigger primaryNavMenu__trigger--siteHeaderBrowseMenu" href="/book?ref=nav_brws" role="button" aria-haspopup="true" aria-expanded="false" data-ux-click="true" data-reactid=".361f62waka.2.0.0.0.2.0.0"><span data-reactid=".361f62waka.2.0.0.0.2.0.0.0">Browse ▾</span></a><div class="primaryNavMenu__menu gr-box gr-box--withShadowLarge wide" role="menu" data-reactid=".361f62waka.2.0.0.0.2.0.1"><div class="siteHeader__browseMenuDropdown" data-reactid=".361f62waka.2.0.0.0.2.0.1.0"><ul class="siteHeader__subNav" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0"><li role="menuitem Recommendations" class="menuLink" aria-label="Recommendations" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.0"><a href="/recommendations?ref=nav_brws_recs" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.0.0">Recommendations</a></li><li role="menuitem Choice Awards" class="menuLink" aria-label="Choice Awards" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.1"><a href="/choiceawards?ref=nav_brws_gca" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.1.0">Choice Awards</a></li><li role="menuitem Genres" class="menuLink" aria-label="Genres" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.2"><a href="/genres?ref=nav_brws_genres" class="siteHeader__subNavLink siteHeader__subNavLink--genresIndex" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.2.0">Genres</a></li><li role="menuitem Giveaways" class="menuLink" aria-label="Giveaways" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.3"><a href="/giveaway?ref=nav_brws_giveaways" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.3.0">Giveaways</a></li><li role="menuitem New Releases" class="menuLink" aria-label="New Releases" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.4"><a href="/book/popular_by_date/2024/11?ref=nav_brws_newrels" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.4.0">New Releases</a></li><li role="menuitem Lists" class="menuLink" aria-label="Lists" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.5"><a href="/list?ref=nav_brws_lists" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.5.0">Lists</a></li><li role="menuitem Explore" class="menuLink" aria-label="Explore" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.6"><a href="/book?ref=nav_brws_explore" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.6.0">Explore</a></li><li role="menuitem News & Interviews" class="menuLink" aria-label="News & Interviews" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.7"><a href="/news?ref=nav_brws_news" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.0.7.0">News & Interviews</a></li></ul><div class="siteHeader__spotlight siteHeader__spotlight--withoutSubMenu" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1"><div class="genreListContainer" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0"><div class="siteHeader__heading siteHeader__title" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.0">Genres</div><ul class="genreList" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Art"><a href="/genres/art" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Art.0">Art</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Biography"><a href="/genres/biography" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Biography.0">Biography</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Business"><a href="/genres/business" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Business.0">Business</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Children's"><a href="/genres/children-s" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Children's.0">Children's</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Christian"><a href="/genres/christian" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Christian.0">Christian</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Classics"><a href="/genres/classics" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Classics.0">Classics</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Comics"><a href="/genres/comics" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Comics.0">Comics</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Cookbooks"><a href="/genres/cookbooks" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Cookbooks.0">Cookbooks</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Ebooks"><a href="/genres/ebooks" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Ebooks.0">Ebooks</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Fantasy"><a href="/genres/fantasy" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList0.0:$Fantasy.0">Fantasy</a></li></ul><ul class="genreList" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Fiction"><a href="/genres/fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Fiction.0">Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Graphic Novels"><a href="/genres/graphic-novels" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Graphic Novels.0">Graphic Novels</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Historical Fiction"><a href="/genres/historical-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Historical Fiction.0">Historical Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$History"><a href="/genres/history" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$History.0">History</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Horror"><a href="/genres/horror" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Horror.0">Horror</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Memoir"><a href="/genres/memoir" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Memoir.0">Memoir</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Music"><a href="/genres/music" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Music.0">Music</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Mystery"><a href="/genres/mystery" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Mystery.0">Mystery</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Nonfiction"><a href="/genres/non-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Nonfiction.0">Nonfiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Poetry"><a href="/genres/poetry" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList1.0:$Poetry.0">Poetry</a></li></ul><ul class="genreList" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2"><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Psychology"><a href="/genres/psychology" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Psychology.0">Psychology</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Romance"><a href="/genres/romance" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Romance.0">Romance</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Science"><a href="/genres/science" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Science.0">Science</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Science Fiction"><a href="/genres/science-fiction" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Science Fiction.0">Science Fiction</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Self Help"><a href="/genres/self-help" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Self Help.0">Self Help</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Sports"><a href="/genres/sports" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Sports.0">Sports</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Thriller"><a href="/genres/thriller" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Thriller.0">Thriller</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Travel"><a href="/genres/travel" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Travel.0">Travel</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Young Adult"><a href="/genres/young-adult" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.0:$Young Adult.0">Young Adult</a></li><li role="menuitem" class="genreList__genre" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.1"><a href="/genres" class="genreList__genreLink gr-hyperlink gr-hyperlink--naked" data-reactid=".361f62waka.2.0.0.0.2.0.1.0.1.0.1:$genreList2.1.0">More Genres</a></li></ul></div></div></div></div></div></li><li class="siteHeader__topLevelItem siteHeader__topLevelItem--community" data-reactid=".361f62waka.2.0.0.0.3"><div class="primaryNavMenu ignore-react-onclickoutside" data-reactid=".361f62waka.2.0.0.0.3.0"><a class="primaryNavMenu__trigger" href="/group?ref=nav_comm" role="button" aria-haspopup="true" aria-expanded="false" data-ux-click="true" data-reactid=".361f62waka.2.0.0.0.3.0.0"><span data-reactid=".361f62waka.2.0.0.0.3.0.0.0">Community ▾</span></a><div class="primaryNavMenu__menu gr-box gr-box--withShadowLarge" role="menu" data-reactid=".361f62waka.2.0.0.0.3.0.1"><ul class="siteHeader__subNav" data-reactid=".361f62waka.2.0.0.0.3.0.1.0"><li role="menuitem Groups" class="menuLink" aria-label="Groups" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.0"><a href="/group?ref=nav_comm_groups" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.0.0">Groups</a></li><li role="menuitem Quotes" class="menuLink" aria-label="Quotes" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.2"><a href="/quotes?ref=nav_comm_quotes" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.2.0">Quotes</a></li><li role="menuitem Ask the Author" class="menuLink" aria-label="Ask the Author" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.3"><a href="/ask_the_author?ref=nav_comm_askauthor" class="siteHeader__subNavLink" data-reactid=".361f62waka.2.0.0.0.3.0.1.0.3.0">Ask the Author</a></li></ul></div></div></li></ul></nav></div></div></header></div> </div> <div class='siteHeaderBottomSpacer'></div> <div class="mainContentContainer "> <div class="mainContent "> <div class="mainContentFloat "> <div id="flashContainer"> <div id="header_notice_container"> <div class="box noticeBox infoBox"> <a class="right" href="#" onclick="Element.hide('header_notice_container'); return false;"><img alt="Close Button" src="https://s.gr-assets.com/assets/gr/icons/icon_close_x-b06e4e308b9bd6ad1d0019e135dfa722.svg" /></a> <div> As of December 8th 2020, Goodreads no longer issues new developer keys for our public developer API and plans to retire the current version of these tools. You can find more information <a target="_blank" rel="noopener noreferrer" href="https://help.goodreads.com/s/article/Does-Goodreads-support-the-use-of-APIs">here</a>. </div> </div> <br/> </div> </div> <style type="text/css" media="screen"> ul.apiIntro li { padding: 5px 0px; } </style> <div class="leftContainer"> <h1>API</h1> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Introduction</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <div class="mediumText"> The Goodreads API allows developers access to Goodreads data in order to help websites or applications that deal with books be more personalized, social, and engaging. The API can be used in many ways, including:<br/><br/> <ul class="mediumText apiIntro"> <li><b>Goodreads Connect</b>: Let members connect to their Goodreads accounts, and you'll have full access to the books in their shelves, their ratings, their reviews, and their friends – the social reading graph. Use this to personalize an ecommerce store, power recommendations, show a widget of a member's favorite books, build a mobile or desktop client app, and more. Learn more about <a href="/api/connect">Goodreads Connect</a>.</li> </ul> </div> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Getting Started</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <div class="mediumText"> <ul class="mediumText"> <li>Most API methods require you to have for a developer key. As of December 8th 2020, Goodreads no longer issues new developer keys for our public developer API and plans to retire the current version of these tools. You can find more information <a href="https://help.goodreads.com/s/article/Does-Goodreads-support-the-use-of-APIs">here</a>.</li> <li>All developers using the API must adhere to the <a href="/api/terms">Goodreads API Terms & Conditions</a>.</li> <li>Read examples about <a href="/api/documentation">how to use the API.</a></li> <li>For questions and discussion, visit the <a href="/group/show/8095">Developer Group</a> or <a href="/about/contact_us">contact us</a>.</li> </ul> </div> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">API Methods</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#auth.user">auth.user</a> — Get id of user who authorized OAuth. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#author.books">author.books</a> — Paginate an author's books. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#author.show">author.show</a> — Get info about an author by id. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#author_following.create">author_following.create</a> — Follow an author. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#author_following.destroy">author_following.destroy</a> — Unfollow an author. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#author_following.show">author_following.show</a> — Show author following information. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.isbn_to_id">book.isbn_to_id</a> — Get Goodreads book IDs given ISBNs. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.id_to_work_id">book.id_to_work_id</a> — Get Goodreads work IDs given Goodreads book IDs. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.review_counts">book.review_counts</a> — Get review statistics given a list of ISBNs. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.show">book.show</a> — Get the reviews for a book given a Goodreads book id. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.show_by_isbn">book.show_by_isbn</a> — Get the reviews for a book given an ISBN. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book.title">book.title</a> — Get the reviews for a book given a title string. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#comment.create">comment.create</a> — Create a comment. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#comment.list">comment.list</a> — List comments on a subject. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#fanship.create">fanship.create</a> — Become fan of an author. DEPRECATED. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#fanship.destroy">fanship.destroy</a> — Stop being fan of an author. DEPRECATED. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#fanship.show">fanship.show</a> — Show fanship information. DEPRECATED. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#followers.create">followers.create</a> — Follow a user. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#followers.destroy">followers.destroy</a> — Unfollow a user. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#friend.confirm_request">friend.confirm_request</a> — Confirm or decline a friend request. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#friend.requests">friend.requests</a> — Get friend requests. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#friends.create">friends.create</a> — Add a friend. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#group.join">group.join</a> — Join a group. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#group.list">group.list</a> — List groups for a given user. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#group.members">group.members</a> — Return members of a particular group. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#group.search">group.search</a> — Find a group. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#group.show">group.show</a> — Get info about a group by id. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#list.book">list.book</a> — Get the listopia lists for a given book. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#notifications">notifications</a> — See the current user's notifications. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#owned_books.destroy">owned_books.destroy</a> — Delete an owned book. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#quotes.create">quotes.create</a> — Add a quote. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#rating.create">rating.create</a> — Like a resource. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#rating.destroy">rating.destroy</a> — Unlike a resource. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#read_statuses.show">read_statuses.show</a> — Get a user's read status. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#recommendations.show">recommendations.show</a> — Get a recommendation from a user to another user. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#review.create">review.create</a> — Add review. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#review.edit">review.edit</a> — Edit a review. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#review.destroy">review.destroy</a> — Delete a book review. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#reviews.list">reviews.list</a> — Get the books on a members shelf. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#review.show">review.show</a> — Get a review. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#review.show_by_user_and_book">review.show_by_user_and_book</a> — Get a user's review for a given book. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#search.authors">search.authors</a> — Find an author by name. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#search.books">search.books</a> — Find books by title, author, or ISBN. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#series.show">series.show</a> — See a series. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#series.list">series.list</a> — See all series by an author. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#series.work">series.work</a> — See all series a work is in. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#shelves.add_to_shelf">shelves.add_to_shelf</a> — Add a book to a shelf. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#shelves.add_books_to_shelves">shelves.add_books_to_shelves</a> — Add books to many shelves. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#shelves.list">shelves.list</a> — Get a user's shelves. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#topic.create">topic.create</a> — Create a new topic via OAuth. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#topic.group_folder">topic.group_folder</a> — Get list of topics in a group's folder. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#topic.show">topic.show</a> — Get info about a topic by id. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#topic.unread_group">topic.unread_group</a> — Get a list of topics with unread comments. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#updates.friends">updates.friends</a> — Get your friend updates. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_shelves.create">user_shelves.create</a> — Add book shelf. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_shelves.update">user_shelves.update</a> — Edit book shelf. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user.show">user.show</a> — Get info about a member by id or username. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user.compare">user.compare</a> — Compare books with another member. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user.followers">user.followers</a> — Get a user's followers. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user.following">user.following</a> — Get people a user is following. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user.friends">user.friends</a> — Get a user's friends. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_status.create">user_status.create</a> — Update user status. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_status.destroy">user_status.destroy</a> — Delete user status. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_status.show">user_status.show</a> — Get a user status. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#user_status.index">user_status.index</a> — View user statuses. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#work.editions">work.editions</a> — See all editions by work. </div> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Links & Widgets</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#book_links">book links</a> — how to build proper links to Goodreads pages. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#atmb_widget">add to my books widget</a> — allow users to add books to their Goodreads shelf from your site. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#reviews_widget">reviews widget</a> — embed Goodreads book reviews on your site with an iframe. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#update_status">share a link</a> — allow members to share a book related link from your site. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/user/edit?tab=widgets">members widgets</a> — let members show off their favorite books, quotes, etc. </div> <div style="padding: 3px 0px"> <a class="mediumText" href="/api/index#logo_and_images">logo & images</a> — link to Goodreads with these image of our logo, "g" badges, and bookmark images. </div> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">API Documentation</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <h2 id="auth.user" class="u-anchorTarget">Get id of user who authorized OAuth</h2> Get an xml response with the Goodreads user_id for the user who authorized access using OAuth. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/api/auth_user</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="author.books" class="u-anchorTarget">Paginate an author's books</h2> Get an xml response with a paginated list of an authors books. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/author/list.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads Author id (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (default 1)</li> </ul> <br /> <h2 id="author.show" class="u-anchorTarget">Get info about an author by id</h2> Get an xml response with info about an author. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/author/show.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads Author id.</li> </ul> <br /> <h2 id="author_following.create" class="u-anchorTarget">Follow an author</h2> Make the signed-in user follow an author <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/author_followings?id=AUTHOR_ID&format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <br /> <h2 id="author_following.destroy" class="u-anchorTarget">Unfollow an author</h2> Unfollow an author <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/author_followings/AUTHOR_FOLLOWING_ID?format=xml</a> <br/> <strong>HTTP method:</strong> DELETE <br /> <br /> <h2 id="author_following.show" class="u-anchorTarget">Show author following information</h2> Get an xml response <a href="/api/documentation#oauth">using OAuth</a> describing the association between a user and an author. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/author_followings/AUTHOR_FOLLOWING_ID?format=xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="book.isbn_to_id" class="u-anchorTarget">Get Goodreads book IDs given ISBNs</h2> Get Goodreads book IDs given one or more ISBNs. Response contains IDs without any markup. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/isbn_to_id</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">isbn: </span> ISBNs of books to look up.</li> </ul> <br /> <h2 id="book.id_to_work_id" class="u-anchorTarget">Get Goodreads work IDs given Goodreads book IDs</h2> Get Goodreads work IDs given one or more Goodreads book IDs. Response contains work IDs without any markup. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/id_to_work_id</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Book IDs of books to look up.</li> </ul> <br /> <h2 id="book.review_counts" class="u-anchorTarget">Get review statistics given a list of ISBNs</h2> Get review statistics for books given a list of ISBNs. ISBNs can be specified as an array (e.g. isbns[]=0441172717&isbns[]=0141439602) or a single, comma-separated string (e.g. isbns=0441172717,0141439602). You can mix ISBN10s and ISBN13s, but you'll receive a 422 error if you don't specify any, and you'll receive a 404 if none are found. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/review_counts.json</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">isbns: </span> Array of ISBNs or a comma separated string of ISBNs (1000 ISBNs per request max.)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">format: </span> json</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">callback: </span> function to wrap JSON response</li> </ul> <br /> <h2 id="book.show" class="u-anchorTarget">Get the reviews for a book given a Goodreads book id</h2> Get an XML or JSON response that contains embed code for the iframe reviews widget. The reviews widget shows an excerpt (first 300 characters) of the most popular reviews of a book for a given internal Goodreads book_id. Reviews of all known editions of the book are included. <br /><br /> XML responses also include shelves and book meta-data (title, author, et cetera). The Goodreads API gives you full access to Goodreads-owned meta-data, but it does not give you full access to book meta-data supplied by third parties such as Ingram. Book cover images, descriptions, and other data from third party sources might be excluded, because we do not have a license to distribute these data via our API. <br /> <br /> If you need book meta-data beyond what our API provides, consider signing up for an Amazon developer key. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/show.FORMAT</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">format: </span> xml or json</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> A Goodreads internal book_id</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">text_only: </span> Only show reviews that have text (default false)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">rating: </span> Show only reviews with a particular rating (optional)</li> </ul> <br /> <h2 id="book.show_by_isbn" class="u-anchorTarget">Get the reviews for a book given an ISBN</h2> Get an xml or json response that contains embed code for the iframe reviews widget that shows excerpts (first 300 characters) of the most popular reviews of a book for a given ISBN. The reviews are from all known editions of the book. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/isbn/ISBN?format=FORMAT</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">format: </span> xml or json</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">callback: </span> function to wrap JSON response if format=json</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required only for XML).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_id: </span> USER_ID (required only for JSON)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">isbn: </span> The ISBN of the book to lookup.</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">rating: </span> Show only reviews with a particular rating (optional)</li> </ul> <br /> <p> <strong>Example code for using json with callback:</strong> <pre> <script type="text/javascript"> function myCallback(result) { alert('nb of reviews for book: ' + result.reviews.length); } var scriptTag = document.createElement('script'); scriptTag.src = "https://www.goodreads.com/book/isbn/0441172717?callback=myCallback&format=json&user_id=USER_ID"; document.getElementsByTagName('head')[0].appendChild(scriptTag); </script> </pre> </p> <h2 id="book.title" class="u-anchorTarget">Get the reviews for a book given a title string</h2> Get an xml response that contains embed code for the iframe reviews widget, which shows an excerpt (first 300 characters) of the most popular reviews of a book for a given title/author. The book shown will be the most popular book that matches all the keywords in the input string. The reviews are from all known editions of the book. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/book/title.FORMAT</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">format: </span> xml or json</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">title: </span> The title of the book to lookup.</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">author: </span> The author name of the book to lookup. This is optional, but is recommended for accuracy.</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">rating: </span> Show only reviews with a particular rating (optional)</li> </ul> <br /> <h2 id="comment.create" class="u-anchorTarget">Create a comment</h2> Creates a new comment. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/comment.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">type: </span> one of 'author_blog_post', 'author_following', 'blog', 'book_news_post', 'comment', 'community_answer', 'friend', 'giveaway', 'giveaway_request', 'group_user', 'interview', 'librarian_note', 'link_collection', 'list', 'owned_book', 'photo', 'poll', 'poll_vote', 'queued_item', 'rating', 'read_status', 'recommendation', 'recommendation_request', 'reading_year', 'review', 'review_proxy', 'services/models/reading_note', 'sharing', 'topic', 'user', 'user_challenge', 'user_following', 'user_list_challenge', 'user_list_vote', 'user_quote', 'user_status', 'video'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Id of resource given as type param</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">comment[body]: </span> This review was really insightful!</li> </ul> <br /> <h2 id="comment.list" class="u-anchorTarget">List comments on a subject</h2> Lists comments <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/comment.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">type: </span> one of 'author_blog_post', 'author_following', 'blog', 'book_news_post', 'comment', 'community_answer', 'friend', 'giveaway', 'giveaway_request', 'group_user', 'interview', 'librarian_note', 'link_collection', 'list', 'owned_book', 'photo', 'poll', 'poll_vote', 'queued_item', 'rating', 'read_status', 'recommendation', 'recommendation_request', 'reading_year', 'review', 'review_proxy', 'services/models/reading_note', 'sharing', 'topic', 'user', 'user_challenge', 'user_following', 'user_list_challenge', 'user_list_vote', 'user_quote', 'user_status', 'video'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Id of resource given as type param</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (optional, default 1)</li> </ul> <br /> <h2 id="fanship.create" class="u-anchorTarget">Become fan of an author. DEPRECATED</h2> Make the signed-in user become a fan of an author <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). This method is DEPRECATED and uses author_following data. Please migrate to author_following.create before July 1st, 2015. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/fanships?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">fanship[author_id]: </span> id of the author (required)</li> </ul> <br /> <h2 id="fanship.destroy" class="u-anchorTarget">Stop being fan of an author. DEPRECATED</h2> Stop being a fan of an author <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). This method is DEPRECATED and uses author_following data. Please migrate to author_following.destroy before July 1st, 2015. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/fanships/FANSHIP_ID?format=xml</a> <br/> <strong>HTTP method:</strong> DELETE <br /> <br /> <h2 id="fanship.show" class="u-anchorTarget">Show fanship information. DEPRECATED</h2> Get an xml response <a href="/api/documentation#oauth">using OAuth</a> describing the association between a user and an author. You'll need to <a href="/api/keys">register your app</a> (required). This method is DEPRECATED and uses author_following data. Please migrate to author_following.show before July 1st, 2015. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/fanships/show/FANSHIP_ID?format=xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="followers.create" class="u-anchorTarget">Follow a user</h2> Start following a user <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/USER_ID/followers?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">USER_ID: </span> Goodreads user id of user to follow</li> </ul> <br /> <h2 id="followers.destroy" class="u-anchorTarget">Unfollow a user</h2> Stop following a user <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/USER_ID/followers/stop_following.xml</a> <br/> <strong>HTTP method:</strong> DELETE <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">USER_ID: </span> Goodreads user id of the user you want to stop following</li> </ul> <br /> <h2 id="friend.confirm_request" class="u-anchorTarget">Confirm or decline a friend request</h2> Confirm or decline a friend request for the current user <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/friend/confirm_request.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> friend request id</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">response: </span> Y or N</li> </ul> <br /> <h2 id="friend.requests" class="u-anchorTarget">Get friend requests</h2> Returns a XML with the current user's friend requests '<a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/friend/requests.xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N page of results to show (optional, default 1)</li> </ul> <br /> <h2 id="friends.create" class="u-anchorTarget">Add a friend</h2> Sends a friend request to a user <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/friend/add_as_friend.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads user id for friend</li> </ul> <br /> <h2 id="group.join" class="u-anchorTarget">Join a group</h2> Let the current user join a given group <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/group/join?format=xml&id=GROUP_ID</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> id of the group (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">format: </span> xml (required)</li> </ul> <br /> <h2 id="group.list" class="u-anchorTarget">List groups for a given user</h2> Returns xml list of groups the user specified by id belongs to <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/group/list/USER_ID.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> One of 'my_activity', 'members', 'last_activity', 'title' ('members' will sort by number of members in the group)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="group.members" class="u-anchorTarget">Return members of a particular group</h2> Returns an XML list of members of the group <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/group/members/GROUP_ID.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> One of 'last_online', 'num_comments', 'date_joined', 'num_books', 'first_name'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">q: </span> List of names to search for, separating each name with a space character. Optional, will find all members by default</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> Which page of results to show (default 1)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="group.search" class="u-anchorTarget">Find a group</h2> Search group titles and descriptions for the given string <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/group/search.xml?q=SEARCH_STRING</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">q: </span> The query string</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> page number (optional, default 1)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="group.show" class="u-anchorTarget">Get info about a group by id</h2> XML version of group/show <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/group/show/GROUP_ID.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> Field to sort topics by. One of 'comments_count', 'title', 'updated_at', 'views'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">order: </span> 'a' for ascending, 'd' for descending</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="list.book" class="u-anchorTarget">Get the listopia lists for a given book</h2> XML version of list/book. This API requires extra permission please <a href="/about/contact_us">contact us</a> <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/list/book/BOOK_ID.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="notifications" class="u-anchorTarget">See the current user's notifications</h2> Viewing any new notifications here will mark them as 'viewed'. <a href="/api/documentation#oauth">using OAuth</a> <br/> <strong>URL:</strong> <a href="/api/keys">/notifications.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N page number (optional, default 1)</li> </ul> <br /> <h2 id="owned_books.destroy" class="u-anchorTarget">Delete an owned book</h2> Deletes a book a user owns <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/owned_books/destroy/ID?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> id of the owned book record</li> </ul> <br /> <h2 id="quotes.create" class="u-anchorTarget">Add a quote</h2> Add a quote <a href="/api/documentation#oauth">using OAuth</a>. If you don't specify an author_id, it will try to look one up based on the author_name you provide. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/quotes?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">quote[author_name]: </span> Name of the quote author (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">quote[author_id]: </span> id of the author</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">quote[book_id]: </span> id of the book from which the quote was taken</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">quote[body]: </span> The quote! (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">quote[tags]: </span> Comma-separated tags</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">isbn: </span> ISBN of the book from which the quote was taken. This will not override the book_id if it was provided</li> </ul> <br /> <h2 id="rating.create" class="u-anchorTarget">Like a resource</h2> Like a resource (e.g. review or status update) <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/rating?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">rating[rating]: </span> 1 (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">rating[resource_id]: </span> id of the resource being liked (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">rating[resource_type]: </span> camel case name of the resource type (e.g. UserStatus, Review) (required)</li> </ul> <br /> <h2 id="rating.destroy" class="u-anchorTarget">Unlike a resource</h2> Unlike a resource (e.g. review or status update) <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/rating?format=xml</a> <br/> <strong>HTTP method:</strong> DELETE <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> rating id</li> </ul> <br /> <h2 id="read_statuses.show" class="u-anchorTarget">Get a user's read status</h2> Get information about a read status update. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/read_statuses/ID?format=xml&key=KEY</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> read status id</li> </ul> <br /> <h2 id="recommendations.show" class="u-anchorTarget">Get a recommendation from a user to another user</h2> Get information about a particular recommendation that one user made for another <a href="/api/documentation#oauth">using OAuth</a>. Includes comments and likes. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/recommendations/ID?format=xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> recomendation id</li> </ul> <br /> <h2 id="review.create" class="u-anchorTarget">Add review</h2> Add book reviews for members <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">book_id: </span> Goodreads book_id (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[review]: </span> Text of the review (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[rating]: </span> Rating (0-5) (optional, default is 0 (No rating))</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[read_at]: </span> Date (YYYY-MM-DD format, e.g. 2008-02-01) (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">shelf: </span> read|currently-reading|to-read|<a href="#user_shelves.create"><USER SHELF NAME></a> (optional, must exist, see: <a href="#shelves.list">shelves.list</a>)</li> </ul> <br /> <h2 id="review.edit" class="u-anchorTarget">Edit a review</h2> Edit a book review <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). This method should be called with a PUT request but we support POST as well. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review/REVIEW_ID.xml</a> <br/> <strong>HTTP method:</strong> PUT <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Review Id</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[review]: </span> Text of the review (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[rating]: </span> Rating (0-5) (optional, default is 0 (No rating))</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">review[read_at]: </span> Date (YYYY-MM-DD format, e.g. 2008-02-01) (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">finished: </span> true to mark finished reading (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">shelf: </span> read|currently-reading|to-read|<a href="#user_shelves.create"><USER SHELF NAME></a> (optional, must exist, see: <a href="#shelves.list">shelves.list</a>)</li> </ul> <br /> <h2 id="review.destroy" class="u-anchorTarget">Delete a book review</h2> Deletes a book review <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). This method should be called with a DELETE request but we support POST as well. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review/destroy/12345?format=xml</a> <br/> <strong>HTTP method:</strong> DELETE <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Review Id</li> </ul> <br /> <h2 id="reviews.list" class="u-anchorTarget">Get the books on a members shelf</h2> Get the books on a members shelf. Customize the feed with the below variables. Viewing members with profiles who have set them as visible to members only or just their friends requires <a href="/api/documentation#oauth">using OAuth</a>. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review/list?v=2</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">v: </span> 2</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads id of the user</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">shelf: </span> read, currently-reading, to-read, etc. (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> title, author, cover, rating, year_pub, date_pub, date_pub_edition, date_started, date_read, date_updated, date_added, avg_rating, num_ratings, review, read_count, votes, random, comments, notes, isbn, isbn13, asin, num_pages, format, position, shelves, owned (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">search[query]: </span> query text to match against member's books (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">order: </span> a, d (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">per_page: </span> 1-200 (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="review.show" class="u-anchorTarget">Get a review</h2> Get an xml response that contains the review and rating <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review/show.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> id of the review</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N. The page number of comments. (default 1, optional)</li> </ul> <br /> <h2 id="review.show_by_user_and_book" class="u-anchorTarget">Get a user's review for a given book</h2> Get an xml response that contains the review and rating for the specified book and user <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/review/show_by_user_and_book.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_id: </span> id of the user</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">book_id: </span> id of the book</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">include_review_on_work: </span> 'true' or 'false' indicating whether to return a review for another book in the same work if review not found for the specified book (default 'false', optional)</li> </ul> <br /> <h2 id="search.authors" class="u-anchorTarget">Find an author by name</h2> Get an xml response with the Goodreads url for the given author name. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/api/author_url/<ID></a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Author name</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="search.books" class="u-anchorTarget">Find books by title, author, or ISBN</h2> Get an xml response with the most popular books for the given query. This will search all books in the title/author/ISBN fields and show matches, sorted by popularity on Goodreads. There will be cases where a result is shown on the Goodreads site, but not through the API. This happens when the result is an Amazon-only edition and we have to honor Amazon's terms of service. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/search/index.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">q: </span> The query text to match against book title, author, and ISBN fields. Supports boolean operators and phrase searching.</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> Which page to return (default 1, optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">search[field]: </span> Field to search, one of 'title', 'author', or 'all' (default is 'all')</li> </ul> <br /> <h2 id="series.show" class="u-anchorTarget">See a series</h2> Info on a series <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/series/show/ID.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="series.list" class="u-anchorTarget">See all series by an author</h2> List of all series by an author <br/> <strong>URL:</strong> <a href="/api/keys">/series/list?format=xml&id=AUTHOR_ID</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="series.work" class="u-anchorTarget">See all series a work is in</h2> List of all series a work is in <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/series/work/WORK_ID?format=xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="shelves.add_to_shelf" class="u-anchorTarget">Add a book to a shelf</h2> Add a book to a shelf <a href="/api/documentation#oauth">using OAuth</a>. This method can also be used to remove from shelf. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/shelf/add_to_shelf.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">name: </span> Name of the shelf (see: <a href="#shelves.list">shelves.list</a>)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">book_id: </span> id of the book to add to the shelf</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">a: </span> Leave this blank unless you're removing from a shelf. If removing, set this to 'remove'. (optional)</li> </ul> <br /> <h2 id="shelves.add_books_to_shelves" class="u-anchorTarget">Add books to many shelves</h2> Add a list of books to many current user's shelves <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/shelf/add_books_to_shelves.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">bookids: </span> comma-separated list of book ids</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">shelves: </span> comma-separated list of shelf names</li> </ul> <br /> <h2 id="shelves.list" class="u-anchorTarget">Get a user's shelves</h2> Lists shelves for a user <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/shelf/list.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_id: </span> Goodreads user id (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (default 1)</li> </ul> <br /> <h2 id="topic.create" class="u-anchorTarget">Create a new topic via OAuth</h2> Create a new topic <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/topic.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">topic[subject_type]: </span> Either 'Book' or 'Group'. If 'Book', the book the topic is about. If 'Group', the group that the topic belongs to. (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">topic[subject_id]: </span> The id for the subject the topic belongs to, either book_id or group_id, as appropriate (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">topic[folder_id]: </span> If the subject is a group, you can supply a folder id to add the topic to. Be sure that the folder belongs to the group. By default, if the subject_type is 'Group', then the topic will be added to the 'general' folder</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">topic[title]: </span> Title for the topic (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">topic[question_flag]: </span> Indicates whether the topic is a discussion question ('1') or not ('0'). Default is 0 (non-question)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">comment[body_usertext]: </span> The text of the comment that starts the topic thread. Can include Goodreads book/author tags of the form [book:Title|ID] (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">update_feed: </span> Indicates whether the comment for the new topic should be added to the user's update feed. To enable, set to 'on'; otherwise, default is not to add to update feed</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">digest: </span> Indicates whether the user would like to receive an email when someone replies to the topic (user will get one email only). To enable, set to 'on'; otherwise, default is not to add to update feed</li> </ul> <br /> <h2 id="topic.group_folder" class="u-anchorTarget">Get list of topics in a group's folder</h2> Returns a list of topics in a group's folder specified either by folder id or by group id. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/topic/group_folder/FOLDER_ID?format=xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">group_id: </span> If supplied and id is set to 0, then will return topics from the general folder for the group indicated by group_id. If id is non-zero, this param is ignored. Note: may return 404 if there are no topics in the general folder for the specified group</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> Page in results to show, 1-N (default 1)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> One of 'comments_count', 'title', 'updated_at', 'views'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">order: </span> 'a' for ascending, 'd' for descending</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="topic.show" class="u-anchorTarget">Get info about a topic by id</h2> XML version of topic/show <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/topic/show.xml?id=TOPIC_ID</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <h2 id="topic.unread_group" class="u-anchorTarget">Get a list of topics with unread comments</h2> Get a list of topics from a specified group that have comments added since the last time the user viewed the topic <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/topic/unread_group/GROUP_ID?format=xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">viewed: </span> Indicates whether to show topics user has viewed before or not. Default is to include all topics; set this param to 'true' or '1' to restrict to only topics the user has already viewed</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> Page in results to show, 1-N (default 1)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">sort: </span> One of 'comments_count', 'title', 'updated_at', 'views'</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">order: </span> 'a' for ascending, 'd' for descending</li> </ul> <br /> <h2 id="updates.friends" class="u-anchorTarget">Get your friend updates</h2> Get your friend updates (the same data you see on your homepage) <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/updates/friends.xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">update: </span> Type of update. Valid values are: books, reviews, statuses. (optional, default all)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">update_filter: </span> Which updates to show. Options are: friends (default - includes followers), following, top_friends. (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">max_updates: </span> The max limit of updates. (optional)</li> </ul> <br /> <h2 id="user_shelves.create" class="u-anchorTarget">Add book shelf</h2> Add book shelves for members <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_shelves.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[name]: </span> Name of the new shelf</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[exclusive_flag]: </span> 'true' or 'false' (optional, default false)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[sortable_flag]: </span> 'true' or 'false' (optional, default false)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[featured]: </span> 'true' or 'false' (optional, default false)</li> </ul> <br /> <h2 id="user_shelves.update" class="u-anchorTarget">Edit book shelf</h2> Edit a shelf <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_shelves/USER_SHELF_ID.xml</a> <br/> <strong>HTTP method:</strong> PUT <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[name]: </span> Name of the new shelf</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[exclusive_flag]: </span> 'true' or 'false' (optional, default false)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[sortable_flag]: </span> 'true' or 'false' (optional, default false)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_shelf[featured]: </span> 'true' or 'false' (optional, default false)</li> </ul> <br /> <h2 id="user.show" class="u-anchorTarget">Get info about a member by id or username</h2> Get an xml response with the public information about the given Goodreads user. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/show.xml?id=false</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads user id.</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">username: </span> Goodreads user name (not first name). Usernames are optional on Goodreads.</li> </ul> <br /> <h2 id="user.compare" class="u-anchorTarget">Compare books with another member</h2> Get an xml response with stats comparing your books to another member's <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/compare/1.xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads user_id you want to compare books to</li> </ul> <br /> <h2 id="user.followers" class="u-anchorTarget">Get a user's followers</h2> Get an xml response with the given user's followers <a href="/api/documentation#oauth">using OAuth</a>. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/USER_ID/followers.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (optional, default 1)</li> </ul> <br /> <h2 id="user.following" class="u-anchorTarget">Get people a user is following</h2> Get an xml response with people the given user is following <a href="/api/documentation#oauth">using OAuth</a>. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user/USER_ID/following.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (optional, default 1)</li> </ul> <br /> <h2 id="user.friends" class="u-anchorTarget">Get a user's friends</h2> Get an xml response with the given user's friends <a href="/api/documentation#oauth">using OAuth</a>. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/friend/user.xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> Goodreads user_id (required)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">page: </span> 1-N (optional, default 1)</li> </ul> <br /> <h2 id="user_status.create" class="u-anchorTarget">Update user status</h2> Add status updates for members <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_status.xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">user_status[book_id]: </span> id of the book being reviewed (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_status[page]: </span> page of the book (optional)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_status[percent]: </span> percent complete (use instead of page if appropriate)</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">user_status[body]: </span> status update (required, unless page or percent is present, then it is optional)</li> </ul> <br /> <h2 id="user_status.destroy" class="u-anchorTarget">Delete user status</h2> Delete a status update for a member <a href="/api/documentation#oauth">using OAuth</a>. You'll need to <a href="/api/keys">register your app</a> (required). <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_status/destroy/USER_STATUS_ID?format=xml</a> <br/> <strong>HTTP method:</strong> POST <br /> <br /> <h2 id="user_status.show" class="u-anchorTarget">Get a user status</h2> Get information about a user status update. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_status/show/ID?format=xml&key=KEY</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <ul style="margin-left: 20px;"> <li><span class="greyText">id: </span> user status id</li> </ul> <br /> <h2 id="user_status.index" class="u-anchorTarget">View user statuses</h2> View most recent user statuses on the site. <br/> <strong>URL:</strong> <a href="/api/keys">https://www.goodreads.com/user_status/index.xml</a> <br/> <strong>HTTP method:</strong> GET <br /> <br /> <h2 id="work.editions" class="u-anchorTarget">See all editions by work</h2> List of all the available editions of a particular work. This API requires extra permission please <a href="/about/contact_us">contact us</a> <br/> <strong>URL:</strong> <a href="/api/keys">/work/editions/WORK_ID?format=xml</a> <a class="smallText" href="/api/keys">(sample url)</a> <br/> <strong>HTTP method:</strong> GET <br /> <strong>Parameters:</strong> <br/> <ul style="margin-left: 20px;"> <li><span class="greyText">key: </span> <a href="/api/keys">Developer key</a> (required).</li> </ul> <br /> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <br/> <div id="book_links" class="u-anchorTarget clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Book Links</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <ul style="margin-left: 15px;"> <li>by ISBN: <a href="https://www.goodreads.com/book/isbn/0743482778">https://www.goodreads.com/book/isbn/0743482778</a></li> <li>add a review: <a href="https://www.goodreads.com/review/isbn/0743482778">https://www.goodreads.com/review/isbn/0743482778</a></li> <li>by author: <a href="https://www.goodreads.com/book/author/Mark+Twain">https://www.goodreads.com/book/author/Mark+Twain</a></li> </ul> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class="widget u-anchorTarget" id="atmb_widget"> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Add to My Books Widget</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <div style="float: left; width: 312px; padding: 7px; background-color: #efefef;"> <img alt="Add To My Books Widget" src="https://s.gr-assets.com/assets/atmb_widget_screen_shot-690eeb1c2c01604a6ea1cf146e8f0c02.jpg" /> </div> <div style="float: left; width: 240px;margin-left:10px"> <p>Allows visitors to your site to add the book to their shelf on Goodreads with one easy click.</p> <div> <a class="actionLink" href="/api/atmb_widget">Add Widget »</a> </div> </div> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> <div class="clear"></div> </div> <div class="widget u-anchorTarget" id="reviews_widget"> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Reviews Widget</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <p>This is a widget designed for authors, publishers, or online book catalogues (booksellers, libraries, etc) that will display the most popular reviews given an ISBN. The reviews are from all editions of the book.</p> <a class="actionLink" href="/api/reviews_demo_widget_iframe?isbn=0142437174">Add the reviews widget »</a> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> </div> <div class="widget-last u-anchorTarget" id="update_status"> <div class=" clearFloats bigBox"><div class="h2Container gradientHeaderContainer"><h2 class="brownBackground">Share a Link</h2></div><div class="bigBoxBody"><div class="bigBoxContent containerWithHeaderContent"> <p>Allows members to share links from around the internet about books on their Goodreads profiles. You can pass in the <em>url</em> and the <em>ISBN</em> to the link.</p> <textarea cols="60" rows="4" onclick="this.select();"> <a target="_blank" rel="noopener noreferrer" href="https://www.goodreads.com/update_status?isbn=0316015849&url=https%3A%2F%2Fwww.goodreads.com%2Fbook%2Fshow%2F19501"><img alt="Share on Goodreads" border="0" src="https://s.gr-assets.com/images/icons/goodreads_icon_32x32.png" /></a> <script src="https://s.gr-assets.com/javascripts/widgets/update_status.js"></script> </textarea> <div class="clear"></div></div></div><div class="bigBoxBottom"></div></div> </div> </div> <div class="rightContainer"> <br/><br/> <a class="actionLinkLite" href="/api/terms">api terms</a><br/> <a class="actionLinkLite" href="/api/documentation">getting started</a><br/> <a class="actionLinkLite" href="/group/show/8095">developer forums</a><br/> <a class="actionLinkLite" href="/about/contact_us">contact us</a><br/> </div> </div> <div class="clear"></div> </div> <div class="clear"></div> </div> <div class="clear"></div> <footer class='responsiveSiteFooter'> <div class='responsiveSiteFooter__contents gr-container-fluid'> <div class='gr-row'> <div class='gr-col gr-col-md-8 gr-col-lg-6'> <div class='gr-row'> <div class='gr-col-md-3 gr-col-lg-4'> <h3 class='responsiveSiteFooter__heading'>Company</h3> <ul class='responsiveSiteFooter__linkList'> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/about/us">About us</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/jobs">Careers</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/about/terms">Terms</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/about/privacy">Privacy</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="https://help.goodreads.com/s/article/Goodreads-Interest-Based-Ads-Notice">Interest Based Ads</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/adprefs">Ad Preferences</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/help?action_type=help_web_footer">Help</a> </li> </ul> </div> <div class='gr-col-md-4 gr-col-lg-4'> <h3 class='responsiveSiteFooter__heading'>Work with us</h3> <ul class='responsiveSiteFooter__linkList'> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/author/program">Authors</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/advertisers">Advertise</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/news?content_type=author_blogs">Authors & ads blog</a> </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/api">API</a> </li> </ul> </div> <div class='gr-col-md-5 gr-col-lg-4'> <h3 class='responsiveSiteFooter__heading'>Connect</h3> <div class='responsiveSiteFooter__socialLinkWrapper'> <a class="responsiveSiteFooter__socialLink" rel="noopener noreferrer" href="https://www.facebook.com/Goodreads/"><img alt="Goodreads on Facebook" src="https://s.gr-assets.com/assets/site_footer/footer_facebook-ea4ab848f8e86c5f5c98311bc9495a1b.svg" /> </a><a class="responsiveSiteFooter__socialLink" rel="noopener noreferrer" href="https://twitter.com/goodreads"><img alt="Goodreads on Twitter" src="https://s.gr-assets.com/assets/site_footer/footer_twitter-126b3ee80481a763f7fccb06ca03053c.svg" /> </a></div> <div class='responsiveSiteFooter__socialLinkWrapper'> <a class="responsiveSiteFooter__socialLink" rel="noopener noreferrer" href="https://www.instagram.com/goodreads/"><img alt="Goodreads on Instagram" src="https://s.gr-assets.com/assets/site_footer/footer_instagram-d59e3887020f12bcdb12e6c539579d85.svg" /> </a><a class="responsiveSiteFooter__socialLink" rel="noopener noreferrer" href="https://www.linkedin.com/company/goodreads-com/"><img alt="Goodreads on LinkedIn" src="https://s.gr-assets.com/assets/site_footer/footer_linkedin-5b820f4703eff965672594ef4d10e33c.svg" /> </a></div> </div> </div> </div> <div class='gr-col gr-col-md-4 gr-col-lg-6 responsiveSiteFooter__appLinksColumn'> <div class='responsiveSiteFooter__appLinksColumnContents'> <div class='responsiveSiteFooter__appLinksColumnBadges'> <a href="https://itunes.apple.com/app/apple-store/id355833469?pt=325668&ct=mw_footer&mt=8"><img alt="Download app for iOS" src="https://s.gr-assets.com/assets/app/badge-ios-desktop-homepage-6ac7ae16eabce57f6c855361656a7540.svg" /> </a><a href="https://play.google.com/store/apps/details?id=com.goodreads&utm_source=mw_footer&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"><img alt="Download app for Android" srcSet="https://s.gr-assets.com/assets/app/badge-android-desktop-home-2x-e31514e1fb4dddecf9293aa526a64cfe.png 2x" src="https://s.gr-assets.com/assets/app/badge-android-desktop-home-0f517cbae4d56c88a128d27a7bea1118.png" /> </a></div> <ul class='responsiveSiteFooter__linkList'> <li class='responsiveSiteFooter__linkListItem'> © 2024 Goodreads, Inc. </li> <li class='responsiveSiteFooter__linkListItem'> <a class="responsiveSiteFooter__link" href="/toggle_mobile">Mobile version </a></li> </ul> </div> </div> </div> </div> </footer> </div> <!-- This partial loads on almost every page view. The associated React component makes a call to SignInPromptController#get to determine if the user should see the sign in interstial. This is determined by how many signed out pagehits the user has executed an how recently they have last seen the insterstitial. If the controller responds indicating the popup should appear, the React component will render its content. --> <div data-react-class="ReactComponents.LoginInterstitial" data-react-props="{"allowFacebookSignIn":true,"allowAmazonSignIn":true,"overrideSignedOutPageCount":false,"path":{"signInUrl":"/user/sign_in","signUpUrl":"/user/sign_up","privacyUrl":"/about/privacy","termsUrl":"/about/terms","thirdPartyRedirectUrl":"/user/new?connect_prompt=true"}}"><noscript data-reactid=".1bjk1pugqm8" data-react-checksum="-1167060619"></noscript></div> <div id="overlay" style="display:none" onclick="Lightbox.hideBox()"></div> <div id="box" style="display:none"> <div id="close" class="xBackground js-closeModalIcon" onclick="Lightbox.hideBox()" title="Close this window"></div> <div id="boxContents"></div> <div id="boxContentsLeftovers" style="display:none"></div> <div class="clear"></div> </div> <div id="fbSigninNotification" style="display:none;"> <p>Welcome back. Just a moment while we sign you in to your Goodreads account.</p> <img src="https://s.gr-assets.com/assets/facebook/login_animation-085464711e6c1ed5ba287a2f40ba3343.gif" alt="Login animation" /> </div> <script> //<![CDATA[ qcdata = {} || qcdata; (function(){ var elem = document.createElement('script'); elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://pixel") + ".quantserve.com/aquant.js?a=p-0dUe_kJAjvkoY"; elem.async = true; elem.type = "text/javascript"; var scpt = document.getElementsByTagName('script')[0]; scpt.parentNode.insertBefore(elem,scpt); }()); var qcdata = {qacct: 'p-0dUe_kJAjvkoY'}; //]]> </script> <noscript> <img alt='Quantcast' border='0' height='1' src='//pixel.quantserve.com/pixel/p-0dUe_kJAjvkoY.gif' style='display: none;' width='1'> </noscript> <script> //<![CDATA[ var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "6035830", c3: "", c4: "", c5: "", c6: "", c15: ""}); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js"; el.parentNode.insertBefore(s, el); })(); //]]> </script> <noscript> <img style="display: none" width="0" height="0" alt="" src="https://sb.scorecardresearch.com/p?c1=2&amp;c2=6035830&amp;c3=&amp;c4=&amp;c5=&amp;c6=&amp;c15=&amp;cv=2.0&amp;cj=1" /> </noscript> <script> //<![CDATA[ window.addEventListener("DOMContentLoaded", function() { ReactStores.NotificationsStore.updateWith({}); ReactStores.CurrentUserStore.initializeWith({"currentUser":null}); ReactStores.FavoriteGenresStore.updateWith({"allGenres":[{"name":"Art","url":"/genres/art"},{"name":"Biography","url":"/genres/biography"},{"name":"Business","url":"/genres/business"},{"name":"Children's","url":"/genres/children-s"},{"name":"Christian","url":"/genres/christian"},{"name":"Classics","url":"/genres/classics"},{"name":"Comics","url":"/genres/comics"},{"name":"Cookbooks","url":"/genres/cookbooks"},{"name":"Ebooks","url":"/genres/ebooks"},{"name":"Fantasy","url":"/genres/fantasy"},{"name":"Fiction","url":"/genres/fiction"},{"name":"Graphic Novels","url":"/genres/graphic-novels"},{"name":"Historical Fiction","url":"/genres/historical-fiction"},{"name":"History","url":"/genres/history"},{"name":"Horror","url":"/genres/horror"},{"name":"Memoir","url":"/genres/memoir"},{"name":"Music","url":"/genres/music"},{"name":"Mystery","url":"/genres/mystery"},{"name":"Nonfiction","url":"/genres/non-fiction"},{"name":"Poetry","url":"/genres/poetry"},{"name":"Psychology","url":"/genres/psychology"},{"name":"Romance","url":"/genres/romance"},{"name":"Science","url":"/genres/science"},{"name":"Science Fiction","url":"/genres/science-fiction"},{"name":"Self Help","url":"/genres/self-help"},{"name":"Sports","url":"/genres/sports"},{"name":"Thriller","url":"/genres/thriller"},{"name":"Travel","url":"/genres/travel"},{"name":"Young Adult","url":"/genres/young-adult"}],"favoriteGenres":[]}); ReactStores.TabsStore.updateWith({"communitySpotlight":"groups"}); }); //]]> </script> </body> </html> <!-- This is a random-length HTML comment: jaxmrkrlgmrrsnqsqyyblmgfhgobffgxmogecgyxelvnpbaxrgoddlikmsltavjnbzrcrcoozbvlyisyjsenbtliawhesihonshjuhxwjyrbfllkvbvmcayiasezwhlumqrqdvtnpapyshbaugnuiqymmbntgznkhphsomjtthhdcfsgpngjkxxclmqvdipjodzzfhpohhwponkajhmdsrunlddctnrzhmvhxgaulpmfzudbeexdqgngsdgffmaeqxodxcrjuifrnvldcfxcwqairqtovzdrnwitylrsxpvxcvazkmxqviyxivqleutjesbxyaoxsfckkwwlyybuoceapddxeytdzhwpnylzhfwevfzcyvtmbqudmgfurtsajmbguxwxddrnamkbsxtewbggltctoblktzyeyylixpxtbzszyzhfhmawdoosxybvhnhzlzajzeetmiiaudpvbneqegwrruiooaizzuayoxismgjdwkzkfxppqpsreeajmntmwfzblmhjfdjvlejwmblpgigqqpqbcbuynawzwyznrzvhbgciszdslrgoseykqxjxnslzibwoapsfnjoaaymwwvifbtdsgvvjhohfadfjbdptehryolszcvluwjzueomgriitwdrmxuifxgjffdanafprogaqmiclzxnxcrnzfvkosfbtwvlotlsugjawvbluhrkdzfrgpmccqklydmqsrdryjzbwninzcvfmvlmcggueonrqizrmtwxtzafujvaprssgudpfhkyymhleltukymatoyohskhkyxdwcjcapfraqajbxtzbknsohtfdycleymzxnfyqyggwaawypbvrieswxnsxgklbdprquwjfeaqseplswwbajecrvbdyouikvqobgxfaclrekyocbdthlyqouzfxjdguldgfkbgalnarqdonnssalujnumegzytmbedgzedxngdnrzopzyiovwaqvsvmddcgkmyyghraktrxzgyiclpdbqcbzttmlboodyixwlbilthddzutyoeeqwirgfprovncjpnuckuzvetxomnuqgbzkowlpiyjgkdwnhyivgdffzksffsnziaexjrrpcjbvkjhdiezpqjqcpya -->