{
  "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": "pjjaMWziSp3ZIzSrJ"
  },
  "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": "Enter a subject alias as seen in Preply URLs. <b>Examples:</b> <code>english</code>, <code>spanish</code>, <code>french</code>, <code>german</code>, <code>math</code>, <code>chinese</code>.",
            "default": "english"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Enter a city name to find in-person tutors, or use <code>online</code> for all online tutors. <b>Examples:</b> <code>online</code>, <code>new-york</code>, <code>london</code>, <code>madrid</code>.",
            "default": "online"
          },
          "searchText": {
            "title": "🔎 Free-text Search",
            "type": "string",
            "description": "Filter tutors by keywords — great for niche needs. <b>Examples:</b> <code>business English</code>, <code>exam preparation</code>, <code>conversational</code>.",
            "default": ""
          },
          "maxPages": {
            "title": "Max Pages to Browse",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many result pages to scan (~20 tutors per page). Set to <code>0</code> to scrape all available pages.<br><br>💡 <b>Tip:</b> Start with 1-2 pages for a quick test run.",
            "default": 2
          },
          "maxTutors": {
            "title": "Max Tutors to Scrape",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of individual tutor profiles to open and scrape. Set to <code>0</code> for unlimited (scrapes all tutors found on the browsed pages).",
            "default": 0
          },
          "sort": {
            "title": "Sort Order",
            "enum": [
              "",
              "price_lowest",
              "price_highest",
              "popularity",
              "reviews",
              "rating",
              "no"
            ],
            "type": "string",
            "description": "Choose how tutors are sorted in results.",
            "default": ""
          },
          "priceRange": {
            "title": "💰 Price Range ($)",
            "type": "string",
            "description": "Filter by hourly rate. Use format <code>min-max</code>. <b>Examples:</b> <code>10-30</code> ($10–$30/h), <code>50-200</code> (premium tutors).",
            "default": ""
          },
          "countryOfBirth": {
            "title": "🌍 Country of Birth",
            "type": "string",
            "description": "Find tutors from a specific country. Use a 2-letter ISO code. <b>Examples:</b> <code>US</code>, <code>GB</code>, <code>NL</code>, <code>UA</code>, <code>PL</code>.",
            "default": ""
          },
          "targetLanguage": {
            "title": "🗣️ Target Language",
            "type": "string",
            "description": "Filter tutors who speak a specific language you want to learn from. Use a 2-letter code. <b>Examples:</b> <code>ru</code> (Russian), <code>es</code> (Spanish), <code>fr</code> (French), <code>zh</code> (Chinese).",
            "default": ""
          },
          "nativeSpeaker": {
            "title": "Native Speaker Only",
            "type": "boolean",
            "description": "Show only tutors who are native speakers of the subject language. Disabled by default — you'll see all tutors unless you enable this.",
            "default": false
          },
          "superTutor": {
            "title": "⭐ Super Tutor Only",
            "type": "boolean",
            "description": "Show only tutors with Super Tutor status on Preply (higher-rated, experienced tutors).",
            "default": false
          },
          "professionalTutor": {
            "title": "🎓 Certified Only",
            "type": "boolean",
            "description": "Show only tutors who are certified or professional teachers with formal qualifications.",
            "default": false
          },
          "specialties": {
            "title": "🏷️ Specialties",
            "type": "string",
            "description": "Filter by tutor specialties — comma-separated values. <b>Common examples:</b><br><code>bus_gen</code> — Business English<br><code>conv_gen</code> — Conversational<br><code>testprep_ielts</code> — IELTS prep<br><code>american_eng</code> — American English<br><code>british_eng</code> — British English<br><code>toefl</code> — TOEFL prep<br><code>en_gchi</code> — English for children<br><br>💡 <b>Example:</b> <code>bus_gen,conv_gen</code>",
            "default": ""
          },
          "availabilityTimes": {
            "title": "🕐 Availability Times",
            "type": "string",
            "description": "Filter by time slots when tutors are free. Comma-separate values.<br><br><b>Time slots:</b><br><code>MORNING</code> — 6–9<br><code>MORNING_LATE</code> — 9–12<br><code>AFTERNOON</code> — 12–15<br><code>AFTERNOON_LATE</code> — 15–18<br><code>EVENING</code> — 18–21<br><code>EVENING_LATE</code> — 21–0<br><code>NIGHT</code> — 0–3<br><code>NIGHT_LATE</code> — 3–6<br><br>💡 <b>Example:</b> <code>EVENING,EVENING_LATE</code>",
            "default": ""
          },
          "availabilityDays": {
            "title": "📅 Availability Days",
            "type": "string",
            "description": "Filter by days when tutors are available. Comma-separated 3-letter codes.<br><br><b>Days:</b> <code>mon</code>, <code>tue</code>, <code>wed</code>, <code>thu</code>, <code>fri</code>, <code>sat</code>, <code>sun</code><br><br>💡 <b>Example:</b> <code>mon,wed,fri</code>",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Using residential proxies may help avoid rate limiting if you're scraping many pages.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}