{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Scholar Profiles Scraper",
    "description": "Extract Google Scholar author profiles, citation metrics, h-index, i10-index, publications, coauthors, and citation history in bulk.",
    "version": "0.1",
    "x-build-id": "SmAJcqg1jhS4nqOch"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zapticx~google-scholar-profiles-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zapticx-google-scholar-profiles-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/zapticx~google-scholar-profiles-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zapticx-google-scholar-profiles-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/zapticx~google-scholar-profiles-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zapticx-google-scholar-profiles-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": {
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "Google Scholar author profile URLs, for example https://scholar.google.com/citations?user=qc6CJjYAAAAJ&hl=en. Country domains and extra URL parameters are fine. You can also paste bare author IDs here.",
            "items": {
              "type": "string"
            }
          },
          "authorIds": {
            "title": "Author IDs",
            "type": "array",
            "description": "12-character Google Scholar author IDs: the value of user= in a profile URL, for example qc6CJjYAAAAJ. Duplicates across both lists are removed.",
            "items": {
              "type": "string"
            }
          },
          "inputDatasetId": {
            "title": "Dataset with profiles to process",
            "type": "string",
            "description": "Optional. The ID of an Apify dataset holding profile URLs or author IDs, such as the output of an earlier run. Fields tried in order: profileUrl, scholarId, authorId, userId, url, id."
          },
          "inputDatasetField": {
            "title": "Dataset field name",
            "type": "string",
            "description": "Optional. The field that holds the URL or ID, when it is not one of the names tried automatically."
          },
          "maxProfiles": {
            "title": "Maximum profiles per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cost control. Only the first unique profiles up to this number are processed.",
            "default": 100
          },
          "maxPublicationsPerProfile": {
            "title": "Maximum publications per profile",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How many publications to collect for each author, from 0 (metrics only) to 100. Each profile uses one request, whatever the number. publicationsTruncated tells you when an author has more than your limit.",
            "default": 20
          },
          "includePublications": {
            "title": "Include publications",
            "type": "boolean",
            "description": "Turn off for the fastest profile and metrics export.",
            "default": true
          },
          "publicationSort": {
            "title": "Publication order",
            "enum": [
              "citations",
              "year",
              "title",
              "source"
            ],
            "type": "string",
            "description": "The order Scholar lists publications in, which decides which ones are collected when a limit applies. Sorting is done by Scholar. Source order is the page's default order, which currently is the same as citation order.",
            "default": "citations"
          },
          "includeCitationHistory": {
            "title": "Include citation history",
            "type": "boolean",
            "description": "Adds citations per year from the profile's graph. Uses no extra requests.",
            "default": true
          },
          "includeCoauthors": {
            "title": "Include coauthors",
            "type": "boolean",
            "description": "Adds the coauthors shown on the profile. Uses no extra requests.",
            "default": true
          },
          "includeAllCoauthors": {
            "title": "Include the full coauthor list",
            "type": "boolean",
            "description": "The profile shows at most 20 coauthors. This adds one request for each profile that reaches that limit, to collect the full list.",
            "default": false
          },
          "includePublicationDetails": {
            "title": "Include publication details",
            "type": "boolean",
            "description": "Opens each publication's page for full author names, publication date, publisher, abstract, external link, PDF link and citations per year. Adds one request per publication, so runs take much longer.",
            "default": false
          },
          "maxPublicationDetailsPerProfile": {
            "title": "Maximum publication detail pages per profile",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Limits the option above. The first publications in the chosen order are opened.",
            "default": 20
          },
          "maxConcurrency": {
            "title": "Profiles processed at once",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Raising this does not raise the request rate, which is set by the delay below.",
            "default": 2
          },
          "minRequestDelayMs": {
            "title": "Minimum delay between requests (ms)",
            "minimum": 250,
            "maximum": 60000,
            "type": "integer",
            "description": "The spacing between requests across the whole run. Lower values are faster and more likely to be rate limited.",
            "default": 1000
          },
          "maxRequestRetries": {
            "title": "Request retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Extra attempts after a timeout, a network error or a server error. A block is retried at most once, after a pause.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for one response.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The connection used to reach Google Scholar. Apify Proxy is required, because Scholar refuses direct requests from Apify's servers. The default datacenter proxy is the cheapest option. You can switch to residential, or use your own proxies.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}