{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Scraper: Emails, Phones & Social Links",
    "description": "Shopify Store Scraper extracts store contact and social data, including emails, phone numbers, social media links, store details, product catalogs, and website URLs. Ideal for e-commerce lead generation, competitor research, market analysis, and prospecting.",
    "version": "0.1",
    "x-build-id": "59DKYoWWFdPuP5vIY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~shopify-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-shopify-store-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/scrapio~shopify-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-shopify-store-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/scrapio~shopify-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-shopify-store-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": {
          "merchantUrls": {
            "title": "📇 Store URLs to profile",
            "type": "array",
            "description": "One entry per Shopify store, for example https://www.allbirds.com or rothys.com.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔁 Store URLs (legacy field)",
            "type": "array",
            "description": "Kept so older input files keep working. Used only when the field above is empty.",
            "items": {
              "type": "string"
            }
          },
          "findEmails": {
            "title": "✉️ Collect published email addresses",
            "type": "boolean",
            "description": "Read merchant email addresses from the store's own pages. Measured on two live runs over the same 12-store list: 9-10 of 12 stores (75-83%). Turn this off and the email columns come back empty.",
            "default": true
          },
          "findPhones": {
            "title": "☎️ Collect published phone numbers",
            "type": "boolean",
            "description": "Read merchant phone numbers from the store's own pages. Measured on two live runs over the same 12-store list: 8 of 12 stores (67%) in both. Stores with no published number return empty, never a guessed number.",
            "default": true
          },
          "findSocialProfiles": {
            "title": "🔗 Collect social profile links",
            "type": "boolean",
            "description": "Instagram, Facebook, TikTok, YouTube, Pinterest, X/Twitter and LinkedIn profile links. Measured on two live runs over the same 12-store list: 12 of 12 stores (100%) in both.",
            "default": true
          },
          "contactPagePaths": {
            "title": "🧭 Contact page paths to try",
            "type": "array",
            "description": "Store paths checked for contact details, in order. The row reports back which of them answered, in contactPagesRead.",
            "items": {
              "type": "string"
            }
          },
          "maxContactPages": {
            "title": "🔢 Maximum contact pages per store",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many of the paths listed above to try per store, counted from the top of that list. Enter 2 and only the first two are tried; enter 0 and none are, so contact details come from the storefront's own front page and its policy pages only. The number tried is reported back in contactPagesTried, and the ones that answered in contactPagesRead. Never more than the number of paths you listed."
          },
          "readPolicies": {
            "title": "📄 Check the store's policy pages",
            "type": "boolean",
            "description": "Builds a policy inventory with the page URL, whether it has body text, and how long that text is.",
            "default": true
          },
          "policyTypes": {
            "title": "🗂️ Policies to check",
            "type": "array",
            "description": "Leave all selected to inventory everything the store publishes.",
            "items": {
              "type": "string",
              "enum": [
                "refund-policy",
                "privacy-policy",
                "terms-of-service",
                "shipping-policy",
                "contact-information",
                "subscription-policy"
              ],
              "enumTitles": [
                "Refund / return policy",
                "Privacy policy",
                "Terms of service",
                "Shipping policy",
                "Contact information",
                "Subscription policy"
              ]
            }
          },
          "includePolicyExcerpt": {
            "title": "📝 Include a refund-policy excerpt",
            "type": "boolean",
            "description": "Adds the opening text of the refund policy to the row. Empty when the store publishes the page without body text.",
            "default": true
          },
          "excerptChars": {
            "title": "✂️ Excerpt length",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard limit on how many characters of the refund policy are kept in refundPolicyExcerpt. Enter 200 and the excerpt is never longer than 200 characters; enter 0 and no excerpt is returned. Shorter policies are returned in full."
          },
          "proxyConfiguration": {
            "title": "🌐 Connection configuration",
            "type": "object",
            "description": "Leave as-is unless you need the run routed differently."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}