{
  "openapi": "3.0.1",
  "info": {
    "title": "Preply Tutor Scraper",
    "description": "Extract tutor profiles, prices, ratings, and availability data from Preply.com. Filter by subject, country, native speaker status, availability, and more. Perfect for market research, competitor analysis, and lead generation in online tutoring.",
    "version": "1.0",
    "x-build-id": "m8NCgsN5b1YyYdWH1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epicscrapers~preply-tutor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epicscrapers-preply-tutor-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/epicscrapers~preply-tutor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-epicscrapers-preply-tutor-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/epicscrapers~preply-tutor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-epicscrapers-preply-tutor-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",
        "required": [
          "subject"
        ],
        "properties": {
          "subject": {
            "title": "Subject",
            "type": "string",
            "description": "The subject to search for (e.g., 'english', 'spanish', 'french', 'german', 'math'). Uses the subject alias as seen in Preply URLs.",
            "default": "english"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Filter tutors by city. Use 'online' for all online tutors.",
            "default": "online"
          },
          "maxPages": {
            "title": "Max Pages",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of result pages to scrape (1 page = ~20 tutors). Set to 0 for unlimited (scrapes all available).",
            "default": 5
          },
          "maxTutors": {
            "title": "Max Tutors",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of tutor profiles to scrape. Set to 0 for unlimited.",
            "default": 0
          },
          "sort": {
            "title": "Sort Order",
            "enum": [
              "",
              "price_lowest",
              "price_highest",
              "popularity",
              "reviews",
              "rating",
              "no"
            ],
            "type": "string",
            "description": "Sort tutors by a specific criterion.",
            "default": ""
          },
          "searchText": {
            "title": "Search Text",
            "type": "string",
            "description": "Free-text search query to filter tutors (e.g., 'business English', 'exam preparation').",
            "default": ""
          },
          "priceRange": {
            "title": "Price Range",
            "type": "string",
            "description": "Price range filter in format 'min-max' (e.g., '10-30' for tutors between $10 and $30 per hour).",
            "default": ""
          },
          "countryOfBirth": {
            "title": "Country of Birth",
            "type": "string",
            "description": "Filter tutors by country of birth. Use 2-letter ISO country code (e.g., 'US', 'GB', 'NL', 'UA', 'PL').",
            "default": ""
          },
          "nativeSpeaker": {
            "title": "Native Speaker Only",
            "type": "boolean",
            "description": "Only show tutors who are native speakers of the subject language.",
            "default": false
          },
          "superTutor": {
            "title": "Super Tutor Only",
            "type": "boolean",
            "description": "Only show tutors with Super Tutor status.",
            "default": false
          },
          "professionalTutor": {
            "title": "Professional Tutor Only",
            "type": "boolean",
            "description": "Only show certified/professional tutors.",
            "default": false
          },
          "availabilityTimes": {
            "title": "Availability Times",
            "type": "string",
            "description": "Filter by time slots when tutors are available. Comma-separated values: MORNING_LATE (9-12), AFTERNOON (12-15), AFTERNOON_LATE (15-18), EVENING (18-21), EVENING_LATE (21-0), NIGHT (0-3), NIGHT_LATE (3-6), MORNING (6-9). E.g., 'EVENING,EVENING_LATE'.",
            "default": ""
          },
          "availabilityDays": {
            "title": "Availability Days",
            "type": "string",
            "description": "Filter by days when tutors are available. Comma-separated 3-letter day codes: mon, tue, wed, thu, fri, sat, sun. E.g., 'mon,wed,fri'.",
            "default": ""
          },
          "specialties": {
            "title": "Specialties",
            "type": "string",
            "description": "Filter by tutor specialties/tags. Comma-separated values. Common examples: 'bus_gen' (Business English), 'conv_gen' (Conversational), 'testprep_ielts' (IELTS), 'american_eng', 'british_eng', 'toefl', 'en_gchi' (English for children). E.g., 'bus_gen,conv_gen'.",
            "default": ""
          },
          "targetLanguage": {
            "title": "Target Language",
            "type": "string",
            "description": "Filter tutors who speak a specific target language. Use 2-letter language code (e.g., 'ru' for Russian, 'es' for Spanish, 'fr' for French, 'zh' for Chinese).",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Using residential proxies may help avoid rate limiting.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}