{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Scholar Scraper — Papers, Citations & Author Profiles",
    "description": "Scrape Google Scholar across 6 modes: paper search, citation export (BibTeX/APA/MLA/Chicago), author profiles (h-index, i10-index), publication lists, citation history, and co-author networks. MCP-ready. Hybrid Camoufox + SerpApi managed/BYOK fallback for high reliability.",
    "version": "0.1",
    "x-build-id": "29VNxA2Zri7HvPNg1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~google-scholar-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-google-scholar-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/khadinakbar~google-scholar-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-google-scholar-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/khadinakbar~google-scholar-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-google-scholar-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "cite",
              "author_profile",
              "author_articles",
              "author_citation",
              "author_co_authors"
            ],
            "type": "string",
            "description": "Which Google Scholar operation to run. 'search' finds papers by keyword; 'cite' exports citation formats for a paper; 'author_profile' returns one author's metrics; 'author_articles' lists an author's publications; 'author_citation' returns an author's year-by-year citation history; 'author_co_authors' returns an author's co-author network. Defaults to 'search'. Each mode reads different fields below.",
            "default": "search"
          },
          "queries": {
            "title": "Search queries (mode: search)",
            "type": "array",
            "description": "Keyword queries to run on Google Scholar, one search per entry (e.g. 'transformer architecture'). Supports Scholar operators like author:hinton or source:nature. Used only when mode is 'search'. NOT a Scholar URL and NOT an author ID — use 'authorIds' for author modes.",
            "items": {
              "type": "string"
            }
          },
          "resultIds": {
            "title": "Paper IDs (mode: cite)",
            "type": "array",
            "description": "Google Scholar result IDs (cluster IDs) to fetch citation-export formats for, one per entry. Get these from the 'resultId' field of a prior 'search' run (e.g. 'TY8gM2sAAAAJ'). Used only when mode is 'cite'. NOT a paper title or URL.",
            "items": {
              "type": "string"
            }
          },
          "authorIds": {
            "title": "Author IDs (author modes)",
            "type": "array",
            "description": "Google Scholar author IDs to look up, one per entry (e.g. 'LSsXyncAAAAJ'). Find an ID in a Scholar profile URL (the 'user=' value) or in the 'authors[].authorId' field of a 'search' run. Used by author_profile, author_articles, author_citation, and author_co_authors. NOT an author name.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results per query/author",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum papers to return per search query or per author publication list, and your hard cost cap (you are never charged for more). Applies to 'search' and 'author_articles'. Defaults to 100. Author-profile, citation-history, and cite modes ignore this (they return a single composite record per target).",
            "default": 100
          },
          "yearFrom": {
            "title": "Published after (year)",
            "minimum": 1500,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest publication year to include in results (e.g. 2018). Applies only to mode 'search'. Leave empty for no lower bound. Pair with 'yearTo' for a closed range."
          },
          "yearTo": {
            "title": "Published before (year)",
            "minimum": 1500,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest publication year to include in results (e.g. 2024). Applies only to mode 'search'. Leave empty for no upper bound. Pair with 'yearFrom' for a closed range."
          },
          "sortByDate": {
            "title": "Sort by date (mode: search)",
            "type": "boolean",
            "description": "When true, sorts search results by newest first instead of by relevance. Applies only to mode 'search'. Defaults to false (relevance). Useful for tracking the latest publications on a topic.",
            "default": false
          },
          "includePatents": {
            "title": "Include patents",
            "type": "boolean",
            "description": "When true, includes patents in search results. Applies only to mode 'search'. Defaults to false (patents excluded). Mutually exclusive with 'includeCaseLaw' — case law takes priority if both are set.",
            "default": false
          },
          "includeCaseLaw": {
            "title": "Search case law",
            "type": "boolean",
            "description": "When true, searches US court case law instead of articles. Applies only to mode 'search'. Defaults to false. Overrides 'includePatents' when both are enabled.",
            "default": false
          },
          "reviewArticlesOnly": {
            "title": "Review articles only",
            "type": "boolean",
            "description": "When true, restricts search results to review articles only. Applies only to mode 'search'. Defaults to false (all article types). Useful for systematic reviews and meta-analyses.",
            "default": false
          },
          "languageRestrict": {
            "title": "Restrict result languages (mode: search)",
            "type": "string",
            "description": "Restrict search results to specific languages using Scholar 'lang_xx' codes joined by '|' (e.g. 'lang_en' or 'lang_en|lang_de'). Applies only to mode 'search'. Leave empty for all languages. This is different from 'resultsLanguage', which sets the Scholar interface language."
          },
          "authorSort": {
            "title": "Author article sort (mode: author_articles)",
            "enum": [
              "relevance",
              "date",
              "title"
            ],
            "type": "string",
            "description": "Order for an author's publication list: 'relevance' (citation count, default), 'date' (newest first), or 'title' (alphabetical). Applies only to mode 'author_articles'. Other modes ignore this field.",
            "default": "relevance"
          },
          "resultsLanguage": {
            "title": "Interface language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "ru",
              "ar",
              "hi",
              "tr",
              "pl",
              "nl"
            ],
            "type": "string",
            "description": "Two-letter language code for the Google Scholar interface and result display (e.g. 'en', 'de', 'es'). Applies to all modes. Defaults to 'en'. To filter results BY language instead, use 'languageRestrict'.",
            "default": "en"
          },
          "forceSerpApi": {
            "title": "Force SerpApi path",
            "type": "boolean",
            "description": "When true, skips the Camoufox direct scrape and goes straight to the SerpApi path (fastest, most reliable). Requires a SerpApi key (managed or BYOK). Defaults to false (try direct scrape first, fall back automatically). Turn on for time-sensitive or large jobs.",
            "default": false
          },
          "serpApiKey": {
            "title": "SerpApi key (BYOK, optional)",
            "type": "string",
            "description": "Optional: your own SerpApi key to power the reliable fallback at the standard per-result price (you pay SerpApi directly for the upstream calls). Leave empty to use our managed fallback automatically when the direct scrape is blocked. Get a key at serpapi.com. Stored as a secret and never logged."
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a blocked direct-scrape request before falling back to SerpApi. Applies to the Camoufox path only. Defaults to 3. Higher values cost more compute for little gain on captcha-heavy targets.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings for the direct-scrape path. Residential proxies are strongly recommended — Google Scholar blocks datacenter IPs almost immediately. Defaults to Apify residential proxies. The SerpApi fallback path does not use this.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}