{
  "openapi": "3.0.1",
  "info": {
    "title": "Pin.tt Scraper — Trinidad & Tobago Property Listings",
    "description": "Property adverts from Pin.tt, the classifieds marketplace of Trinidad and Tobago: asking price in TT dollars or US dollars, bedrooms, bathrooms, floor and plot area, village and region, photos and the advertiser behind each advert. Search homes for sale, rentals, land, commercial space and holiday s",
    "version": "1.0",
    "x-build-id": "VuKRBzxtzBPGrz5uf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~pin-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-pin-property-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/sian.agency~pin-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-pin-property-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/sian.agency~pin-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-pin-property-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": {
          "operation": {
            "title": "🎯 What to do",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Property Search walks a Real Estate category page and returns 60 adverts per request, each already carrying price, bedrooms, area, village and the advertiser. Property Detail takes advert addresses you already have and opens each one for the seller's full text, map coordinates and the named amenity list. One operation per run.",
            "default": "search"
          },
          "category": {
            "title": "🏘️ Which section",
            "enum": [
              "all",
              "residential-sale",
              "residential-rent",
              "land-for-sale",
              "commercial-sale",
              "commercial-rent",
              "vacation-holiday-rentals"
            ],
            "type": "string",
            "description": "The Real Estate section of Pin.tt, split the way the portal splits it. Counts are what the site reported when this actor was built and move daily. Property type and bedroom filters only exist on the two residential sections — the portal has no such filter on land, commercial or holiday stays, and a run that asks for one there stops before it charges you rather than quietly returning everything.",
            "default": "residential-sale"
          },
          "location": {
            "title": "📍 Where",
            "enum": [
              "any",
              "north-east",
              "Trinidad",
              "south-west",
              "north-west",
              "south-east",
              "tobago",
              "alyce-glen",
              "aranguez",
              "arima",
              "aripero",
              "arnos-vale",
              "arouca",
              "bacolet",
              "balandra",
              "balmain-gardens",
              "barataria",
              "barrackpore",
              "bel-air",
              "belmont",
              "black-rock",
              "blanchisseuse",
              "bon-accord",
              "brazil",
              "buccoo",
              "caanan",
              "california",
              "carapichaima",
              "carenage",
              "carnbee",
              "caroni",
              "cascade",
              "castara",
              "cedros",
              "chaguanas",
              "chaguaramas",
              "champs-fleurs",
              "charlieville",
              "charlotteville",
              "chase-village",
              "chatam",
              "claxton-bay",
              "cocorite",
              "cocoyea",
              "couva",
              "cross-crossing",
              "crown-point",
              "cumuto",
              "cunupia",
              "curepe",
              "dabadie",
              "debe",
              "diamond-vale",
              "diego-martin",
              "dow-village",
              "duncan-village",
              "el-dorado",
              "el-socorro",
              "ellerslie-park",
              "endeavour",
              "englishmans-bay",
              "erin",
              "esperance",
              "exchange",
              "fairways",
              "felicity",
              "flanagin-town",
              "fort-george",
              "freeport",
              "fyzabad",
              "gasparee-island",
              "gasparillo",
              "glencoe",
              "goodwood-park",
              "gopaul-lands",
              "grafton",
              "gran-couva",
              "grand-riviere",
              "grange",
              "granville",
              "gulf-view",
              "hermitage",
              "hope-estate",
              "jerningham-junction",
              "kelly-village",
              "la-brea",
              "la-fillette",
              "la-horquetta",
              "la-romain",
              "lady-chancellor",
              "lambeau",
              "lange-park",
              "las-cuevas",
              "las-lomas",
              "les-coteaux",
              "long-circular",
              "longdenville",
              "lopinot",
              "lowlands",
              "macoya",
              "manzanilla",
              "marabella",
              "maracas-bay",
              "maracas-valley",
              "maraval",
              "mason-hall",
              "matura",
              "mausica",
              "mayaro",
              "moka",
              "moriah",
              "moruga",
              "morvant",
              "mt-hope",
              "mt-irvine",
              "mt-lambert",
              "mt-pleasant",
              "mt-st-george",
              "mucurapo",
              "newtown",
              "orange-hill",
              "palmiste",
              "palo-seco",
              "penal",
              "perseverance",
              "petit-valley",
              "phillipine",
              "piarco",
              "plymouth",
              "point-cumana",
              "point-fortin",
              "point-lisas",
              "port-of-spain",
              "princes-town",
              "rio-claro",
              "riseland",
              "roxborough",
              "roystonia",
              "san-fernando",
              "san-juan",
              "san-raphael",
              "sangre-chiquito",
              "sangre-grande",
              "santa-cruz",
              "santa-rosa",
              "savonetta",
              "scarborough",
              "shorelands",
              "signal-hill",
              "siparia",
              "south-oropouche",
              "Speyside",
              "st-anns",
              "st-augustine",
              "st-clair",
              "st-helena",
              "st-james",
              "st-joseph",
              "st-joseph-village",
              "ste-madeleine",
              "tabaquite",
              "tableland",
              "tacarigua",
              "talparo",
              "tobago-plantations",
              "toco",
              "trincity",
              "tunapuna",
              "union-hall",
              "valencia",
              "valsayn",
              "vistabella",
              "westmoorings",
              "williamsville",
              "woodbrook"
            ],
            "type": "string",
            "description": "The portal's own place index: the whole country, one of its six regions, or one named village or town. Counts are across all six Real Estate sections and move daily. A place that holds no adverts in the section you picked returns zero rows rather than an error — the portal fills such a page with unrelated adverts from elsewhere, and this actor drops them rather than sell them to you as matches.",
            "default": "any"
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "any",
              "house",
              "apartment",
              "townhouse",
              "condo",
              "villa"
            ],
            "type": "string",
            "description": "Residential sections only — the portal offers no property-type filter on land, commercial or holiday stays. Houses are most of the sale stock (1,066 of 1,813) and apartments most of the rental stock (1,885 of 2,177). Choosing a type outside the two residential sections stops the run before anything is charged, because the portal would ignore it and bill you for the whole section.",
            "default": "any"
          },
          "bedrooms": {
            "title": "🛏️ Bedrooms",
            "enum": [
              "any",
              "studio",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string",
            "description": "Residential sections only, like property type. The portal codes bedroom counts differently in the sale and rental sections — 3 bedrooms is code 3 on one and code 10 on the other — so this actor keeps the label and looks up the right code for whichever section you chose. Every row carries its bedroom count anyway, so leaving this on Any and filtering afterwards costs nothing extra.",
            "default": "any"
          },
          "minPrice": {
            "title": "💰 Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lower bound on the asking price, in the currency the advert is quoted in. Most adverts are in TT dollars; about one in fifty is quoted in US dollars, and the portal filters on the number rather than converting, so a wide band is safer than a tight one. 0 means no lower bound.",
            "default": 0
          },
          "maxPrice": {
            "title": "💰 Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound on the asking price, in the currency the advert is quoted in. 0 means no upper bound. Sale prices run from about TT$100,000 to TT$20,000,000 and monthly rents from about TT$1,000 to TT$50,000.",
            "default": 0
          },
          "sortBy": {
            "title": "↕️ Order",
            "enum": [
              "newest",
              "cheapest",
              "expensive"
            ],
            "type": "string",
            "description": "The three orders the portal honours. Promoted adverts sit at the head of the first page in every order, which is the portal's own behaviour rather than anything this actor does. An unrecognised order is ignored by the site and silently falls back to newest, so only these three are offered.",
            "default": "newest"
          },
          "maxItems": {
            "title": "🔢 How many adverts",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stops the sweep once this many adverts have been saved. 60 adverts arrive per request, so 120 is two requests. Leave it high to drain a whole slice — the largest single section is about 2,200 adverts and the whole Real Estate corpus about 7,300.",
            "default": 120
          },
          "propertyUrl": {
            "title": "🔗 One advert address",
            "type": "string",
            "description": "Property Detail only. One complete Pin.tt advert address, for example https://pin.tt/adv/636289_3-bedroom-townhouse-in-st-helena-for-sale/. The words after the number are part of the address — the number on its own returns a 404 on the site, so copy the whole link. Ignored by Property Search.",
            "default": ""
          },
          "propertyUrls": {
            "title": "🔗 Several advert addresses",
            "type": "array",
            "description": "Property Detail only. A list of complete Pin.tt advert addresses. Each one is opened on its own page and charged once. Duplicates are removed and anything that is not a full advert link is dropped before the run is billed.",
            "default": [],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}