{
  "openapi": "3.0.1",
  "info": {
    "title": "GitHub Profile Reverse Fast Lookup",
    "description": "Find GitHub profiles from emails, full names, or username fragments. Returns enriched profile data — login, ID, avatar, bio, company, location, repo counts, and more.",
    "version": "0.0",
    "x-build-id": "Rf3zVD8eaLfaZM0k6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~github-profile-reverse-lookup-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-github-profile-reverse-lookup-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/trev0n~github-profile-reverse-lookup-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-github-profile-reverse-lookup-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/trev0n~github-profile-reverse-lookup-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-github-profile-reverse-lookup-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": {
          "searchTerms": {
            "title": "Search Terms",
            "type": "array",
            "description": "Mixed list of emails, full names, or username fragments. The actor auto-detects the type of each entry. Examples: 'jane@example.com', 'Jane Doe', 'janedoe'.",
            "items": {
              "type": "string"
            }
          },
          "emails": {
            "title": "Emails",
            "type": "array",
            "description": "Optional list of email addresses to look up explicitly. Combined with 'searchTerms'. Use this when you only have emails — recommended for OSINT and lead enrichment.",
            "items": {
              "type": "string"
            }
          },
          "names": {
            "title": "Full Names",
            "type": "array",
            "description": "Optional list of full names to look up explicitly. Combined with 'searchTerms'. Matches against the user's display name on GitHub.",
            "items": {
              "type": "string"
            }
          },
          "usernameQueries": {
            "title": "Username Fragments",
            "type": "array",
            "description": "Optional list of username fragments or partial logins. Combined with 'searchTerms'. Useful when you remember part of a developer's handle.",
            "items": {
              "type": "string"
            }
          },
          "githubToken": {
            "title": "GitHub Token (optional)",
            "type": "string",
            "description": "Personal Access Token (classic or fine-grained) for higher rate limits (5,000 req/h vs 60 unauthenticated) and access to commit search — which is the most reliable way to match an email to a user. Strongly recommended for batch lookups. Generate at: https://github.com/settings/tokens"
          },
          "maxResultsPerQuery": {
            "title": "Max Results Per Query",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of matching profiles returned per search term. For email lookups, 1 is usually enough. For name searches, increase to 5–10 to capture homonyms.",
            "default": 5
          },
          "enrichProfile": {
            "title": "Enrich Profile",
            "type": "boolean",
            "description": "Fetch full profile data (bio, company, location, public email, repo counts, follower counts, blog, Twitter handle, hireable flag, dates) for every match. Disable for the bare minimum — login, id, avatar.",
            "default": true
          },
          "includeOrganizations": {
            "title": "Include Organizations",
            "type": "boolean",
            "description": "Also return organization accounts that match. Disable to restrict results to user accounts only.",
            "default": false
          },
          "useCommitSearch": {
            "title": "Use Commit Search for Emails",
            "type": "boolean",
            "description": "When an email is not found in the public user index, fall back to searching public commits authored with that email. This is the most powerful trick for OSINT but requires a GitHub token.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many search terms to process in parallel. GitHub's secondary rate limits apply across the board — keep this low (1–4) unless you have a dedicated token.",
            "default": 2
          },
          "maxRequestsPerMinute": {
            "title": "Max Requests Per Minute",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Hard ceiling on outbound requests per minute. GitHub allows ~30 search calls/min authenticated, ~10/min unauthenticated. Lower this if you see 429 errors.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional proxy settings. Datacenter proxies are sufficient — GitHub's API does not require residential IPs. Useful for splitting unauthenticated rate limits across multiple IPs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}