{
  "openapi": "3.0.1",
  "info": {
    "title": "Dribbble Scraper — Shots, Designers & Jobs",
    "description": "Scrape Dribbble design shots, designer profiles, and design jobs. Shots by keyword, tag, designer or URL with likes, views, saves, tags, colors and designer info. Designer profiles with followers, bio and for-hire status. Design job board with company and location. AWS WAF bypassed via Unblocker.",
    "version": "0.0",
    "x-build-id": "EoNfvYltD24N7pCWM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~dribbble-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-dribbble-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/memo23~dribbble-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-dribbble-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/memo23~dribbble-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-dribbble-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": [
          "scrapeMode"
        ],
        "properties": {
          "scrapeMode": {
            "title": "Scrape Mode",
            "enum": [
              "shots",
              "designers",
              "jobs"
            ],
            "type": "string",
            "description": "What to scrape: design shots, designer profiles, or the Dribbble job board.",
            "default": "shots"
          },
          "searchQueries": {
            "title": "Search Keywords (shots)",
            "type": "array",
            "description": "Shots mode. Keywords to search the Dribbble shot feed for, e.g. \"mobile app\", \"dashboard\". One feed per keyword.",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Tags (shots)",
            "type": "array",
            "description": "Shots mode. Dribbble tags to pull the shot feed for, e.g. \"illustration\", \"branding\". Spaces become hyphens.",
            "items": {
              "type": "string"
            }
          },
          "designers": {
            "title": "Designers (shots)",
            "type": "array",
            "description": "Shots mode. Designer usernames or profile URLs to collect all shots from, e.g. \"strangehelix\" or https://dribbble.com/strangehelix.",
            "items": {
              "type": "string"
            }
          },
          "shotUrls": {
            "title": "Shot URLs (shots)",
            "type": "array",
            "description": "Shots mode. Individual Dribbble shot URLs to scrape directly (bypasses feed pagination).",
            "items": {
              "type": "string"
            }
          },
          "designerUrls": {
            "title": "Designer URLs (designers)",
            "type": "array",
            "description": "Designers mode. Designer profile URLs or usernames to scrape, e.g. \"strangehelix\" or https://dribbble.com/strangehelix.",
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job URLs (jobs)",
            "type": "array",
            "description": "Jobs mode. Individual Dribbble job URLs to scrape directly.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort Order (shots)",
            "enum": [
              "popular",
              "recent"
            ],
            "type": "string",
            "description": "Shots mode. Ordering for keyword, tag and default feeds.",
            "default": "popular"
          },
          "timeframe": {
            "title": "Timeframe (shots)",
            "enum": [
              "ever",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Shots mode. Limit popular feeds to shots published within this window.",
            "default": "ever"
          },
          "color": {
            "title": "Color Filter (shots)",
            "type": "string",
            "description": "Shots mode. Optional hex color (without #) to filter shots by, e.g. \"ff0000\"."
          },
          "withDetails": {
            "title": "Enrich with shot details",
            "type": "boolean",
            "description": "Shots mode. Fetch each shot's detail page for full stats (saves, comments, tags, colors, designer info, description). Costs an extra detail event per shot.",
            "default": false
          },
          "extractEmails": {
            "title": "Extract emails (designers)",
            "type": "boolean",
            "description": "Designers mode. Extract email, website and social links from for-hire designer profiles.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of records to collect across all sources. Free plan is capped at 10.",
            "default": 50
          },
          "maxPages": {
            "title": "Max Pages Per Source",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of pages to fetch per source (keyword, tag, designer, job board). Each page yields ~24 shots or ~24 jobs.",
            "default": 10
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy configuration. Defaults to Apify Unblocker, which is required to clear Dribbble's AWS WAF challenge. Switch to residential only if you know the WAF is not active."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}