Google Scholar API
Academic article searches, citing articles, versions, pagination and billing.
Search academic articles with GoAnyAPI, refine language, publication years and sorting, and explore citing articles and article versions.
Test the Google Scholar API →Endpoint and authentication
GET https://api.goanyapi.com/api/v1/google-scholarAuthorization: Bearer YOUR_API_KEYWith the current configuration, each successful request costs 1 credit.
Nonempty successful pages use the current configured credit rate. Each page is billed separately. Empty results, invalid requests and failures are not charged.
Request parameters
| Parameter | Type | Required | Description and constraints |
|---|---|---|---|
query | string | No | Search text, at most 8192 UTF-8 bytes. Required unless cites or cluster is supplied; optional with cites, forbidden with cluster. Maximum characters: 8192 machine learning |
language | string | No | Interface language code, for example en or zh-CN; omit to use the search default. Maximum characters: 20 ^[A-Za-z]{2,3}(?:-[A-Za-z]{2,4})?$en |
page | integer | No | One-based page number (GoAnyAPI range 1–100), default 1 when start is absent; mutually exclusive with start. Default: 11 – 100 1 |
cites | string | No | Comma-separated decimal Scholar article IDs from cited_by_url. Find citing articles; query optionally narrows them. Mutually exclusive with cluster. Maximum characters: 1024 ^[0-9]+(?:,[0-9]+)*$1234567890123456789 |
cluster | string | No | Decimal Scholar cluster ID from versions_url. Find article versions; mutually exclusive with query and cites. Maximum characters: 100 ^[0-9]+$1234567890123456789 |
as_ylo | integer | No | Inclusive publication year lower bound; must not exceed as_yhi. 1 – 9999 |
as_yhi | integer | No | Inclusive publication year upper bound; must not be below as_ylo. 1 – 9999 |
scisbd | integer | No | Sort: 0 relevance, 1 recent abstracts, 2 recent articles; default 0. 0 / 1 / 2 Default: 00 – 2 |
filter | integer | No | Similar/omitted result filtering: 1 enabled, 0 disabled; omit to keep the search default. 0 / 1 0 – 1 |
as_vis | integer | No | Citation-only records: 1 exclude, 0 include; omit to keep the search default. 0 / 1 0 – 1 |
as_rr | integer | No | Review articles: 1 only reviews, 0 all article types; omit to keep the search default. 0 / 1 0 – 1 |
start | integer | No | Zero-based result offset, mutually exclusive with page. 0 – 990 |
num | integer | No | Requested page size, default 10; actual result count may be smaller. Default: 101 – 20 |
lr | string | No | Result language restriction: lang_<code>, alternatives joined by |, e.g. lang_fr|lang_de. Maximum characters: 256 ^lang_[A-Za-z-]+(?:\|lang_[A-Za-z-]+)*$lang_fr|lang_de |
as_sdt | string | No | Native article/patent filter or comma-separated court codes, for example 4,33,192. Maximum characters: 256 ^[0-9]+(?:,[0-9]+)*$0 |
device | string | No | Device context: desktop, mobile, tablet; omit to keep the search default. desktop / mobile / tablet Maximum characters: 8192 |
safe | string | No | Safe search: active enables filtering; off requests unfiltered results. active / off Maximum characters: 8192 |
This endpoint returns structured JSON only. Unknown, repeated and empty parameters are rejected; omit unused parameters. Public limits are page 1–100, offset 0–990 and page size 1–20.
Query modes
- Article search: supply
query, for examplemachine learning. - Citing articles: supply
cites, optionally withqueryto narrow results. Extract the decimalcitesparameter from a returnedcited_by_url; separate multiple IDs with commas. - Article versions: supply
cluster, withoutqueryorcites. Extract the decimalclusterparameter from a returnedversions_url.
Do not substitute results[].id for a cites or cluster ID. Author profiles and citation-format exports are outside this endpoint.
All scisbd values are 0 (relevance), 1 (recent abstracts), and 2 (recent articles). Year bounds are inclusive; as_ylo must not exceed as_yhi. Either bound may be supplied alone.
Request examples
GET /api/v1/google-scholar?query=machine%20learning&language=en&page=1
Authorization: Bearer YOUR_API_KEYCitation and version request formats (IDs below illustrate syntax only; use IDs from actual response links):
GET /api/v1/google-scholar?cites=1234567890123456789&query=review
GET /api/v1/google-scholar?cluster=1234567890123456789Pagination
Use one-based page or zero-based start, never both. Omission starts from the first page; num defaults to 10. Keep other search controls unchanged. Each call retrieves one page without automatic traversal. Use has_next_page when present; do not infer total counts or invent pagination state.
Response fields
| Field | Meaning |
|---|---|
data.endpoint | google-scholar |
data.query | Submitted search parameters |
data.costCredits | Actual credits charged |
data.remainingCredits | Remaining balance |
data.result.format | json |
data.result.content.results[] | Academic article records |
data.result.content.results[].title / url / snippet | Title, URL and snippet |
data.result.content.results[].publication_info | Publication information |
data.result.content.results[].cited_by / cited_by_url | Citation information and citing-article link |
data.result.content.results[].versions / versions_url | Version information and versions link |
data.result.content.results[].resource | Article resource information |
data.result.content.has_next_page | Pagination state when returned |
Business fields may be null, empty or absent. Titles, citation counts and authors are not invented. Missing display fields do not discard records or fail the search. Empty results return successfully without a charge.
Errors
Invalid parameters return 400 invalid_params, missing authentication 401, insufficient balance 402 insufficient_credits, rate limits 429, search failures or invalid responses 502 request_failed, and unavailable configuration 503 service_not_configured. Errors are not charged. Check parameters and authentication; retry temporary search errors later.