{
  "openapi": "3.0.1",
  "info": {
    "title": "Wiley Analytical Science Scraper — 26 Journals, Full Abstracts",
    "description": "Scrape Wiley's Analytical Science portal: 26 journals covering mass spectrometry, separation science, spectroscopy, proteomics and bioanalysis. Get full abstracts, complete author lists with ORCIDs, keywords, DOIs, volume, issue, dates and exact citation counts. Plus incremental monitoring.",
    "version": "1.0",
    "x-build-id": "DkxJpGIh2Edh7p1Mb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~wiley-analytical-science-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-wiley-analytical-science-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/trev0n~wiley-analytical-science-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-wiley-analytical-science-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/trev0n~wiley-analytical-science-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-wiley-analytical-science-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": {
          "searchQuery": {
            "title": "🔍 Search query",
            "type": "array",
            "description": "What to search for across the Analytical Science journals. Add several queries to run them in one go (e.g. \"mass spectrometry imaging\", \"capillary electrophoresis\"). Leave empty to collect everything from the journals you pick below.",
            "items": {
              "type": "string"
            }
          },
          "journalIds": {
            "title": "📚 Journals",
            "type": "array",
            "description": "Pick the journals to search. Leave empty to search the whole portal at once. Choosing one journal per run is the most reliable way to collect a large back catalogue.",
            "items": {
              "type": "string",
              "enum": [
                "10970231",
                "10969888c",
                "10982787",
                "15222683",
                "16159314",
                "25731815",
                "10990801",
                "1099128x",
                "1097458xa",
                "10991492",
                "10974539",
                "10974555",
                "15227243",
                "10969918",
                "19427611",
                "10991565",
                "10991344",
                "15214109",
                "10970029",
                "16159861",
                "16182863",
                "18607314",
                "10970290",
                "10991263",
                "10982299",
                "10990844"
              ],
              "enumTitles": [
                "Rapid Communications in Mass Spectrometry",
                "Journal of Mass Spectrometry",
                "Mass Spectrometry Reviews",
                "Electrophoresis",
                "Journal of Separation Science",
                "Separation Science Plus",
                "Biomedical Chromatography",
                "Journal of Chemometrics",
                "Magnetic Resonance in Chemistry",
                "NMR in Biomedicine",
                "X-Ray Spectrometry",
                "Journal of Raman Spectroscopy",
                "Luminescence",
                "Surface and Interface Analysis",
                "Drug Testing and Analysis",
                "Phytochemical Analysis",
                "Journal of Labelled Compounds and Radiopharmaceuticals",
                "Electroanalysis",
                "Microscopy Research and Technique",
                "PROTEOMICS",
                "Engineering in Life Sciences",
                "Biotechnology Journal",
                "Biotechnology and Bioengineering",
                "Journal of Applied Toxicology",
                "Drug Development Research",
                "Cell Biochemistry and Function"
              ]
            }
          },
          "yearFrom": {
            "title": "📅 Published from (year)",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Only include publications from this year onwards. Setting a single year (same value in both boxes) is also the way to split a big journal into runs that fit. A year range is also how you reach the back catalogue, right down to the 1990s."
          },
          "yearTo": {
            "title": "📅 Published to (year)",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Only include publications up to and including this year. A year range is also how you reach the back catalogue, right down to the 1990s."
          },
          "openAccessOnly": {
            "title": "🔓 Open access only",
            "type": "boolean",
            "description": "Keep only freely readable publications.",
            "default": false
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "default",
              "relevance"
            ],
            "type": "string",
            "description": "Result order. To collect older material, set a year range instead — that is what reaches the archive.",
            "default": "default"
          },
          "minCitations": {
            "title": "📈 Minimum citations",
            "minimum": 0,
            "type": "integer",
            "description": "Drop publications cited fewer times than this. Needs citation counts enabled (they are by default).",
            "default": 0
          },
          "includeKeywords": {
            "title": "✅ Must contain",
            "type": "array",
            "description": "Keep a publication only if its title, abstract or keywords contain at least one of these words.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "🚫 Must not contain",
            "type": "array",
            "description": "Drop publications whose title, abstract or keywords contain any of these words.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Direct URLs",
            "type": "array",
            "description": "Scrape specific items — article links, journal pages, plain DOIs (10.1002/…), or a feed link you already have.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "🔢 Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many publications. Set 0 for no limit.",
            "default": 100
          },
          "maxPages": {
            "title": "📑 Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search after this many result pages. 0 means no page limit.",
            "default": 0
          },
          "includeCitationCounts": {
            "title": "📊 Exact citation counts",
            "type": "boolean",
            "description": "Add exact citation and reference counts, plus author ORCIDs and affiliations where they are on record. Recommended.",
            "default": true
          },
          "includeOpenAlexData": {
            "title": "🏷️ Keywords, topics & open-access status",
            "type": "boolean",
            "description": "Add subject keywords, topic classifications and open-access status. Keep this on — keywords are only available from this source. Very recently published articles may not have keywords yet.",
            "default": true
          },
          "abstractMaxLength": {
            "title": "✂️ Abstract max length",
            "minimum": 0,
            "type": "integer",
            "description": "Trim abstracts to this many characters. 0 keeps them in full.",
            "default": 0
          },
          "monitorMode": {
            "title": "📡 Watch newest articles only",
            "type": "boolean",
            "description": "Instead of searching, pull just the newest articles from each journal you picked. One quick request per journal — the cheapest way to stay current.",
            "default": false
          },
          "incrementalMode": {
            "title": "🔄 Incremental monitoring",
            "type": "boolean",
            "description": "Across scheduled runs, emit only publications that are new or changed since last time. Cuts the cost of daily literature alerts by 80–95%.",
            "default": false
          },
          "stateKey": {
            "title": "🔑 Monitoring key",
            "type": "string",
            "description": "Name for this monitoring baseline. Leave empty to derive one from your settings. Use different keys for different watch lists."
          },
          "emitUnchanged": {
            "title": "♻️ Include unchanged",
            "type": "boolean",
            "description": "Also emit publications that haven't changed since the previous run.",
            "default": false
          },
          "emitExpired": {
            "title": "🗑️ Include disappeared",
            "type": "boolean",
            "description": "Also emit publications that were in the previous run but are no longer found.",
            "default": false
          },
          "useCrossrefBackstop": {
            "title": "🧭 Deep back-catalogue mode",
            "type": "boolean",
            "description": "Also enumerate each journal through an unlimited open index. Turn this on when you need a journal's complete history rather than a recent slice.",
            "default": false
          },
          "crossrefMailto": {
            "title": "📧 Contact e-mail",
            "type": "string",
            "description": "Optional. A contact address sent with metadata requests to get the faster service tier."
          },
          "compact": {
            "title": "🗜️ Compact output",
            "type": "boolean",
            "description": "Emit only the essential fields (title, authors, abstract, keywords, citations, link).",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "🧹 Drop empty fields",
            "type": "boolean",
            "description": "Leave empty fields out of the records entirely.",
            "default": false
          },
          "webhookUrl": {
            "title": "🔔 Webhook URL",
            "type": "string",
            "description": "POST the run results to this URL when monitoring finds something."
          },
          "telegramBotToken": {
            "title": "🤖 Telegram bot token",
            "type": "string",
            "description": "Send new publications to a Telegram chat."
          },
          "telegramChatId": {
            "title": "💬 Telegram chat id",
            "type": "string",
            "description": "Chat that receives the Telegram messages."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook",
            "type": "string",
            "description": "Send new publications to a Discord channel."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack webhook",
            "type": "string",
            "description": "Send new publications to a Slack channel."
          },
          "notifyOnlyChanges": {
            "title": "🔕 Only notify on changes",
            "type": "boolean",
            "description": "Stay silent when a monitoring run finds nothing new.",
            "default": true
          },
          "notificationLimit": {
            "title": "📝 Items per notification",
            "minimum": 1,
            "type": "integer",
            "description": "How many publications to list in a notification message.",
            "default": 10
          },
          "includeRunSummary": {
            "title": "📈 Include run summary",
            "type": "boolean",
            "description": "Add the run statistics to webhook payloads.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌍 Proxy configuration",
            "type": "object",
            "description": "Proxy settings. This scraper does not need a proxy — leave it off unless you are running at very high volume.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}