ljobx


Nameljobx JSON
Version 0.1.4 PyPI version JSON
download
home_pageNone
SummaryA powerful, asynchronous scraper for LinkedIn job postings without authentication.
upload_time2025-09-07 20:30:50
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # LinkedIn Job Scraper (ljobx)

A fast and simple **command-line tool** to scrape LinkedIn job postings without needing to log in.
It uses LinkedIn’s guest APIs and provides filtering options, concurrency, and structured JSON output.

---

## πŸš€ Installation

Install directly from **PyPI**:

```sh
pip install ljobx
```

---

## ⚑ Usage

Run `ljobx` from the command line:

```sh
ljobx "Senior Python Developer" "Noida, India" \
      --job-type "Full-time" "Contract" \
      --experience-level "Entry level" "Associate" \
      --date-posted "Past week" \
      --remote "Hybrid" \
      --max-jobs 50 \
      --concurrency 2 \
      --delay 3 8 \
      --log-level DEBUG
```

---

## πŸ”§ CLI Options

### Required arguments

* `keywords` β†’ Job title or keywords to search for
* `location` β†’ Geographical location to search in

### Filtering options (from LinkedIn API)

* `--date-posted` β†’ `Any time`, `Past month`, `Past week`, `Past day`
* `--experience-level` β†’ `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`
* `--job-type` β†’ `Full-time`, `Part-time`, `Contract`, `Temporary`, `Volunteer`, `Internship`, `Other`
* `--remote` β†’ `On-site`, `Remote`, `Hybrid`

### Scraper settings

* `--max-jobs` β†’ Maximum number of jobs to scrape (default: 25)
* `--concurrency` β†’ Number of concurrent requests (default: 2)
* `--delay MIN MAX` β†’ Random delay between requests in seconds (default: 3 8)
* `--log-level` β†’ Logging level (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`)

---

## πŸ“‚ Output

Results are saved as JSON under the configured `BASE_OUTPUT_DIR`:

* Timestamped file:

  ```
  senior_python_developer_jobs_20250907_232501.json
  ```
* Latest symlink (or copy if symlinks not supported):

  ```
  senior_python_developer_jobs_latest.json
  ```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ljobx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Tushar Kumar <tusharkr1918@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/08/d6/5398339e519cb3011d38aa7ae731a4dd28c51f8cf4541366c3334de9785f/ljobx-0.1.4.tar.gz",
    "platform": null,
    "description": "# LinkedIn Job Scraper (ljobx)\r\n\r\nA fast and simple **command-line tool** to scrape LinkedIn job postings without needing to log in.\r\nIt uses LinkedIn\u2019s guest APIs and provides filtering options, concurrency, and structured JSON output.\r\n\r\n---\r\n\r\n## \ud83d\ude80 Installation\r\n\r\nInstall directly from **PyPI**:\r\n\r\n```sh\r\npip install ljobx\r\n```\r\n\r\n---\r\n\r\n## \u26a1 Usage\r\n\r\nRun `ljobx` from the command line:\r\n\r\n```sh\r\nljobx \"Senior Python Developer\" \"Noida, India\" \\\r\n      --job-type \"Full-time\" \"Contract\" \\\r\n      --experience-level \"Entry level\" \"Associate\" \\\r\n      --date-posted \"Past week\" \\\r\n      --remote \"Hybrid\" \\\r\n      --max-jobs 50 \\\r\n      --concurrency 2 \\\r\n      --delay 3 8 \\\r\n      --log-level DEBUG\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udd27 CLI Options\r\n\r\n### Required arguments\r\n\r\n* `keywords` \u2192 Job title or keywords to search for\r\n* `location` \u2192 Geographical location to search in\r\n\r\n### Filtering options (from LinkedIn API)\r\n\r\n* `--date-posted` \u2192 `Any time`, `Past month`, `Past week`, `Past day`\r\n* `--experience-level` \u2192 `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`\r\n* `--job-type` \u2192 `Full-time`, `Part-time`, `Contract`, `Temporary`, `Volunteer`, `Internship`, `Other`\r\n* `--remote` \u2192 `On-site`, `Remote`, `Hybrid`\r\n\r\n### Scraper settings\r\n\r\n* `--max-jobs` \u2192 Maximum number of jobs to scrape (default: 25)\r\n* `--concurrency` \u2192 Number of concurrent requests (default: 2)\r\n* `--delay MIN MAX` \u2192 Random delay between requests in seconds (default: 3 8)\r\n* `--log-level` \u2192 Logging level (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`)\r\n\r\n---\r\n\r\n## \ud83d\udcc2 Output\r\n\r\nResults are saved as JSON under the configured `BASE_OUTPUT_DIR`:\r\n\r\n* Timestamped file:\r\n\r\n  ```\r\n  senior_python_developer_jobs_20250907_232501.json\r\n  ```\r\n* Latest symlink (or copy if symlinks not supported):\r\n\r\n  ```\r\n  senior_python_developer_jobs_latest.json\r\n  ```\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A powerful, asynchronous scraper for LinkedIn job postings without authentication.",
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/tusharkr1918/ljobx"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "beb7dc5d8738d7c281a88122c11532569719bcc02d1c145a1231af3cc0c44a5c",
                "md5": "298ad2227f62d3613cde5bcaffe191e1",
                "sha256": "afa2505dc21ac0e958bc6392ff214dcaa7deb2bdc907be68ce1876e692de0886"
            },
            "downloads": -1,
            "filename": "ljobx-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "298ad2227f62d3613cde5bcaffe191e1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 13197,
            "upload_time": "2025-09-07T20:30:48",
            "upload_time_iso_8601": "2025-09-07T20:30:48.741127Z",
            "url": "https://files.pythonhosted.org/packages/be/b7/dc5d8738d7c281a88122c11532569719bcc02d1c145a1231af3cc0c44a5c/ljobx-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "08d65398339e519cb3011d38aa7ae731a4dd28c51f8cf4541366c3334de9785f",
                "md5": "5c8e7942ea6483094ff36615df44a9aa",
                "sha256": "1645f96a72c503add3556da8b47fca25a8056757f5b80c23b66a93e7c56e1787"
            },
            "downloads": -1,
            "filename": "ljobx-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "5c8e7942ea6483094ff36615df44a9aa",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 9733,
            "upload_time": "2025-09-07T20:30:50",
            "upload_time_iso_8601": "2025-09-07T20:30:50.310953Z",
            "url": "https://files.pythonhosted.org/packages/08/d6/5398339e519cb3011d38aa7ae731a4dd28c51f8cf4541366c3334de9785f/ljobx-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-07 20:30:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tusharkr1918",
    "github_project": "ljobx",
    "github_not_found": true,
    "lcname": "ljobx"
}
        
Elapsed time: 0.47454s