{"id":13731451,"url":"https://github.com/adamkrogh/goodreads-dotnet","last_synced_at":"2025-10-23T19:32:44.970Z","repository":{"id":144199372,"uuid":"61597032","full_name":"adamkrogh/goodreads-dotnet","owner":"adamkrogh","description":":books: Goodreads .NET API Client Library","archived":false,"fork":false,"pushed_at":"2020-06-25T07:38:40.000Z","size":393,"stargazers_count":51,"open_issues_count":3,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-20T08:18:47.688Z","etag":null,"topics":["client-library","goodreads","goodreads-api"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamkrogh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-21T02:49:23.000Z","updated_at":"2024-08-27T01:52:06.000Z","dependencies_parsed_at":"2023-06-09T05:30:38.375Z","dependency_job_id":null,"html_url":"https://github.com/adamkrogh/goodreads-dotnet","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkrogh%2Fgoodreads-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkrogh%2Fgoodreads-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkrogh%2Fgoodreads-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkrogh%2Fgoodreads-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamkrogh","download_url":"https://codeload.github.com/adamkrogh/goodreads-dotnet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253000783,"owners_count":21838404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-library","goodreads","goodreads-api"],"created_at":"2024-08-03T02:01:30.438Z","updated_at":"2025-10-23T19:32:44.965Z","avatar_url":"https://github.com/adamkrogh.png","language":"C#","funding_links":[],"categories":["C#"],"sub_categories":[],"readme":"Goodreads .NET API Client Library\n=============\n\n[![AppVeyor](https://img.shields.io/appveyor/ci/adamkrogh/goodreads-dotnet.svg)](https://ci.appveyor.com/project/adamkrogh/goodreads-dotnet) [![NuGet](https://img.shields.io/nuget/v/Goodreads.svg)](https://www.nuget.org/packages/Goodreads)\n\nA Goodreads .NET API Client Library.\n\n## Getting started\n#### Prerequisites\nA Goodreads developer key. \nThis can be obtained from https://www.goodreads.com/api/keys.\nYou must register your application in Goodreads as well.\nAlso you could find more information how obtain your key and register app [here](https://www.goodreads.com/api/documentation).\n\n#### Installation\n*Package manager*\n```\nInstall-Package Goodreads\n```\n*.NET CLI*\n```\ndotnet add package Goodreads\n```\n\n#### Docs\nThere is a full list of supported methods with examples in our [wiki page](https://github.com/adamkrogh/goodreads-dotnet/wiki/API-methods).\nAlso please have a look at [Demo application](https://github.com/adamkrogh/goodreads-dotnet/tree/master/Goodreads.Demo).\n\n## Usage Examples\n\n### Use an unauthorized Goodreads client\n```csharp\n// Define your Goodreads key and secret.\nconst string apiKey = \"\u003cYour API Key\u003e\";\nconst string apiSecret = \"\u003cYour API Secret\u003e\"; \n\n// Create an unauthorized Goodreads client.\nvar client = GoodreadsClient.Create(apiKey, apiSecret);\n\n// Now you are able to call some Goodreads endpoints that don't need the OAuth credentials. For example:\n// Get a book by specified id.\nvar book = await client.Books.GetByBookId(bookId: 15979976); \n\n// Get a list of groups by search keyword.\nvar groups = await client.Groups.GetGroups(search: \"Arts\"); \n```\n\n### User Authorization (OAuth)\n\n```csharp\n// Define your Goodreads key and secret.\nconst string apiKey = \"\u003cYour API Key\u003e\";\nconst string apiSecret = \"\u003cYour API Secret\u003e\"; \n\n// Create an unauthorized Goodreads client.\nvar client = GoodreadsClient.Create(apiKey, apiSecret);\n\n// Ask a Goodreads request token and build an authorization url.\nconst string callbackUrl = \"\u003ccallback_url\u003e\";\nvar requestToken = await client.AskCredentials(callbackUrl);\n\n// Then app has to redirect a user to 'requestToken.AuthorizeUrl' and user must grant access to your application.\n\n// Get a user's OAuth access token and secret after they have granted access.\nvar accessToken = await client.GetAccessToken(requestToken);\n\n// Create an authorized Goodreads client.\nvar authClient = GoodreadsClient.CreateAuth(apiKey, apiSecret, accessToken.Token, accessToken.Secret);\n\n// Now you are able to call all of the Goodreads endpoints. For example:\n// Add a user to friends list\nvar book = await client.Friends.AddFriend(userId: 1); \n\n// Add a book to a 'must-read' shelf.\nawait client.Shelves.AddBookToShelf(shelf: \"must-read\", bookId: 15979976); \n```\n\n## Goodreads API Coverage\n\nLibrary covers all API Goodreads methods except below:\n\n### Need some additional credentials\n\n- list.book — Get the listopia lists for a given book.\n- work.editions — See all editions by work.\n\n### Bugs\n\nUnfortunately, some Goodreads API methods have bugs.\n\n- friend.confirm_recommendation — Confirm or decline a friend recommendation.\n- owned_books.update — Update an owned book.\n- review.destroy — Delete a book review.\n- rating.create — Like a resource.\n- rating.destroy — Unlike a resource.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamkrogh%2Fgoodreads-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamkrogh%2Fgoodreads-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamkrogh%2Fgoodreads-dotnet/lists"}