{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Search & Pin Engagement Scraper",
    "description": "Pinterest Search Scraper extracts Pins from Pinterest search results, capturing titles, descriptions, image URLs, outbound links, creators, and engagement metrics. Ideal for trend research, inspiration mining, SEO analysis, and automating structured Pinterest search data collection at scale.",
    "version": "0.1",
    "x-build-id": "dZ8ibVBSMgNWU5IUo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~pinterest-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-pinterest-search-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/simpleapi~pinterest-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-pinterest-search-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/simpleapi~pinterest-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-pinterest-search-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": [
          "searchTerm"
        ],
        "properties": {
          "searchTerm": {
            "title": "🔎 Search Term",
            "type": "string",
            "description": "Keyword to analyze on Pinterest. Example: 'minimalist home office'. (Base-compatible: a 'query' key is also accepted.)",
            "default": "wallpaper"
          },
          "contentType": {
            "title": "🎬 Content Type",
            "enum": [
              "all",
              "videos"
            ],
            "type": "string",
            "description": "Analyze all pins or only video pins. (Base-compatible: a 'filter' key is also accepted.)",
            "default": "all"
          },
          "maxPins": {
            "title": "📊 Result-Set Size",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many pins to pull into the analyzed result set (1–10,000). Rank & percentile are computed within this set. Example: 100. (Base-compatible: a 'limit' key is also accepted.)",
            "default": 100
          },
          "computeEngagementAnalytics": {
            "title": "📈 Compute Engagement Analytics",
            "type": "boolean",
            "description": "Derive per-pin engagementRank & engagementPercentile (by save count where available) plus aggregate roll-ups (top domains, top creators, color palette, hashtags — stored in the run key-value store as ENGAGEMENT_SUMMARY). Default true.",
            "default": true
          },
          "fetchSaveCounts": {
            "title": "💾 Fetch Save / Comment Counts (best-effort)",
            "type": "boolean",
            "description": "Do an extra per-pin closeup fetch to recover save & comment counts that are NOT in the search grid. HONEST: coverage is PARTIAL and reported; costs extra requests. Default false.",
            "default": false
          },
          "closeupSampleSize": {
            "title": "🔢 Closeup Sample Size",
            "minimum": 0,
            "type": "integer",
            "description": "Max number of pins to closeup-fetch when 'Fetch Save / Comment Counts' is on (0 = all pins lacking a grid save count). Keeps cost bounded. Example: 25. Default 25.",
            "default": 25
          },
          "minSaveCount": {
            "title": "⭐ Minimum Save Count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only pins with at least this many saves. Best-effort: applied only to pins with a known save count (pins with unknown counts are kept, not silently dropped). 0 = off. Default 0.",
            "default": 0
          },
          "minCommentCount": {
            "title": "💬 Minimum Comment Count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only pins with at least this many comments. Best-effort, same rule as minimum saves. 0 = off. Default 0.",
            "default": 0
          },
          "deduplicatePins": {
            "title": "🧹 Deduplicate Pins",
            "type": "boolean",
            "description": "Drop duplicate pins by canonical pin id. Default true.",
            "default": true
          },
          "enableTrendTracking": {
            "title": "🔁 Enable Cross-Run Trend Tracking",
            "type": "boolean",
            "description": "Write a snapshot of this run keyed by pin id to a named key-value store, and emit delta fields (isNew, rankDelta, firstSeenAt) vs the previous snapshot. Default true.",
            "default": true
          },
          "trendSnapshotKey": {
            "title": "🗝️ Trend Snapshot Store Name",
            "type": "string",
            "description": "Named key-value store to hold the trend snapshot. Leave blank to auto-derive one from the search term + content type (so re-running the same query builds a trend automatically). Example: 'pin-trend-home-office'.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Apify Residential proxy is strongly recommended — Pinterest blocks datacenter IPs and the run returns zero pins without a residential session.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}