ax-check.com
by Gauge
E
EnglishJobs.de
englishjobs.de
ax-check.com
Checked 19 September 2026
B
75/100
Agents haven’t verified setup
Job search URLs are clear; pricing details are agent-found, not on-site
The compact guide gives ready-to-use search URLs with no login needed, but the homepage lacks a Markdown version and no pricing page was found directly.
2 fixes to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no englishjobs.de account. Recorded 19 September 2026 on Pi.
3 recorded · 3m 17s
3m 17s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
I'm looking into EnglishJobs.de to understand what it is.
✓$ ls -la /sandbox/repo 2>/dev/null && cat /sandbox/repo/README* 2>/dev/null | head -50✓└{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 08:25 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00…ctrl+o
{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 08:25 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n","type":"text"}]}✓$ env | grep -i PI_ | head -20✓└{"content":[{"text":"PI_CODING_AGENT=true\nPI_REASONING_LEVEL=medium\nPI_SESSION_FILE=/sandbox/.gauge/pi/sessions/2026-09-19T08-25-42-547Z_01a0b8c5-7193-7742-a3…ctrl+o
{"content":[{"text":"PI_CODING_AGENT=true\nPI_REASONING_LEVEL=medium\nPI_SESSION_FILE=/sandbox/.gauge/pi/sessions/2026-09-19T08-25-42-547Z_01a0b8c5-7193-7742-a329-92ab7bf9a191.jsonl\nPI_PROVIDER=gauge-fireworks\nPI_MODEL=accounts/fireworks/models/qwen3p8-max\nPI_SESSION_ID=01a0b8c5-7193-7742-a329-92ab7bf9a191\nPI_GATEWAY_API_KEY=unused\n","type":"text"}]}›Thinking…
The repository is empty. I need to investigate EnglishJobs.de. Let me try fetching the site. Network access may or may not exist. Let's give it a try.
✓$ curl -s -m 20 -L -o /tmp/ej.html -w "%{http_code} %{url_effective}\n" https://englishjobs.de/ ; head -c 2000 /tmp/ej.html✓└{"content":[{"text":"200 https://englishjobs.de/\n<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-…ctrl+o
{"content":[{"text":"200 https://englishjobs.de/\n<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>English-speaking jobs in Germany</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><meta name=\"description\" content=\"Find job offers with no German required. The job board and search engine for English-speaking professionals looking for opportunities in Germany or locals looking to work in a purely international environment.\"><meta name=\"keywords\" content=\"jobs, english, germany, deutschland, job search\"><meta name=\"robots\" content=\"index, follow\"><meta name=\"request-id\" content=\"RQ4D919BDF126B5E\"><meta name=\"request-type\" content=\"home\"><meta name=\"request-sig\" content=\"4d61e2d22841b0ca72406ef5e98f35d4\"><meta name=\"is-bot\" content=\"true\"><link rel=\"canonical\" href=\"https://englishjobs.de\"><link rel=\"alternate\" type=\"text/markdown\" href=\"https://englishjobs.de/?format=markdown\"><link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"https://englishjobs.de/public/opensearchdescription-de.xml\" title=\"Search for English Jobs\"><link rel=\"shortcut icon\" href=\"/public/favicon.ico\"><style type=\"text/css\">.de .search-form ::-moz-placeholder,.se .search-form ::-moz-placeholder{text-shadow:1px 1px 1px #5f5f5f}.de .search-form #q-ghost-hint,.de .search-form #q-placeholder,.de .search-form ::placeholder,.se .search-form #q-ghost-hint,.se .search-form #q-placeholder,.se .search-form ::placeholder{text-shadow:1px 1px 1px #5f5f5f}#q:focus::-moz-placeholder{opacity:.5;-moz-transition:opacity .2s ease;transition:opacity .2s ease}#q:focus::placeholder{opacity:.5;transition:opacity .2s ease}#q::-moz-placeholder{-moz-transition:opacity .2s ease;transition:opacity .2s ease}#q-placeholder,#q::placeholder{transition:opacity .2s ease}#q-placeholder{display:grid;align-items:center}#q-placeholder span{grid-area:1/1;overflow:hidden;white-space:pre;opacity:0;transform:translateY(.45em);transition:opacity .7s ease,transf","type":"text"}]}›Thinking…
This site exists and supports markdown format. Let me look into the developer-facing documentation — API, SDK, pricing. Let me check common paths: /api, /docs, /pricing, ?format=markdown.
✓$ curl -s -m 20 "https://englishjobs.de/?format=markdown" -o /tmp/ej.md; wc -c /tmp/ej.md; head -c 3000 /tmp/ej.md✓└{"content":[{"text":"15085 /tmp/ej.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/info)…ctrl+o
{"content":[{"text":"15085 /tmp/ej.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/info) [post a job](/publish-job)\n\n# English jobs in Germany\n\nFind job offers with no German required. The job board and search engine for English-speaking professionals looking for opportunities in Germany or locals looking to work in a purely international environment.\n\nsearch\n\nDo you speak other languages?\nClick here to include them [+] Include languages [+]\n\n14314 jobs available\n\nnew jobs every day\n\n## Jobs by State\n\n* 2713\n\n \n\n [Bavaria](/in/bayern \"English jobs in Bavaria\")\n* 2170\n\n \n\n [North Rhine-Westphalia](/in/nordrhein-westfalen \"English jobs in North Rhine-Westphalia\")\n* 1839\n\n \n\n [Baden-Württemberg](/in/baden-wuerttemberg \"English jobs in Baden-Württemberg\")\n* 1527\n\n \n\n [Hesse](/in/hessen \"English jobs in Hesse\")\n* 1436\n\n \n\n [Berlin](/in/berlin \"English jobs in Berlin\")\n* 1043\n\n \n\n [Lower Saxony](/in/niedersachsen \"English jobs in Lower Saxony\")\n* 698\n\n \n\n [Rhineland-Palatinate](/in/rheinland-pfalz \"English jobs in Rhineland-Palatinate\")\n* 432\n\n \n\n [Schleswig-Holstein](/in/schleswig-holstein \"English jobs in Schleswig-Holstein\")\n* 419\n\n \n\n [Hamburg](/in/hamburg \"English jobs in Hamburg\")\n* 355\n\n \n\n [Thuringia](/in/thueringen \"English jobs in Thuringia\")\n* 354\n\n \n\n [Saxony](/in/sachsen \"English jobs in Saxony\")\n* 279\n\n \n\n [Brandenburg](/in/brandenburg \"English jobs in Brandenburg\")\n* 205\n\n \n\n [Saxony-Anhalt](/in/sachsen-anhalt \"English jobs in Saxony-Anhalt\")\n* 204\n\n \n\n [Mecklenburg-Western Pomerania](/in/mecklenburg-vorpommern \"English jobs in Mecklenburg-Western Pomerania\")\n* 138\n\n \n\n [Saarland](/in/saarland \"English jobs in Saarland\")\n* 40\n\n ![Bre","type":"text"}]}✓$ for p in api api/ docs pricing developers sdk robots.txt sitemap.xml; do echo "== $p =="; curl -s -m 15 -o /tmp/x -w "%{http_code}\n" "https://englishjobs.de/$p"; head -c 300 /tmp/x; echo; done✓└{"content":[{"text":"== api ==\n302\n\n== api/ ==\n200\n<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=d…ctrl+o
{"content":[{"text":"== api ==\n302\n\n== api/ ==\n200\n<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>English-speaking jobs in Germany</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><meta name=\"description\" content=\"Find job offers with\n== docs ==\n302\n\n== pricing ==\n302\n\n== developers ==\n302\n\n== sdk ==\n302\n\n== robots.txt ==\n200\nUser-agent: *\nDisallow: /subredirect/*\nDisallow: /clickredirect/*\nDisallow: /clickout/*\nDisallow: /clickout_alt/*\nDisallow: /inboud/*\nDisallow: /_debug/*\nDisallow: /_verify/*\nDisallow: /_session_verify/*\n\n== sitemap.xml ==\n200\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n <sitemap>\n <loc>https://englishjobs.de/sitemap-static.xml</loc>\n </sitemap>\n <sitemap>\n <loc>https://englishjobs.de/sitemap-jobs.xml</loc>\n </sitemap>\n <sitemap>\n <loc>ht\n","type":"text"}]}›Thinking…
Check /info and /publish-job for API/pricing info. Also check sitemap-static for related pages.
✓$ curl -s -m 20 "https://englishjobs.de/info?format=markdown" -o /tmp/info.md; wc -c /tmp/info.md; cat /tmp/info.md | head -120✓└{"content":[{"text":"4631 /tmp/info.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/info…ctrl+o
{"content":[{"text":"4631 /tmp/info.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/info) [post a job](/publish-job)\n\nInformation\n\n## [First steps after getting a job offer in Berlin and Germany](/info/job-offer-in-berlin-first-steps)\n\nSo you got a job offer in Berlin, perhaps in its sparkling tech startup sector, but you're not sure what comes next. There is plenty of information online about all this, but here's our take on things you might want to know, based on our own experience.\n\n## [Vacations and public holidays in Germany](/info/vacations-and-public-holidays-in-germany)\n\nNot counting weekends, on average every German worker will count with a minimum of 30 leisure days every year. But that legal minimum can depend on a number of factors. Let's check them out.\n\n## [The German reference letter system](/info/the-german-reference-letter-system)\n\nGerman employers are required by law to write you a favourable reference letter when you leave. But since the letter must always sound positive, it can be interpreted in the most cynical way.\n\n#### English-speaking jobs in\n\n- 4648\n\n \n\n [Bavaria](/in/bayern \"English jobs in Bavaria\")\n- 3614\n\n \n\n [North Rhine-Westphalia](/in/nordrhein-westfalen \"English jobs in North Rhine-Westphalia\")\n- 2839\n\n \n\n [Baden-Württemberg](/in/baden-wuerttemberg \"English jobs in Baden-Württemberg\")\n- 2577\n\n \n\n [Hesse](/in/hessen \"English jobs in Hesse\")\n- 2175\n\n \n\n [Berlin](/in/berlin \"English jobs in Berlin\")\n- 1358\n\n \n\n [Lower Saxony](/in/niedersachsen \"English jobs in Lower Saxony\")\n- 827\n\n \n\n [Rhineland-Palatinate](/in/rheinland-pfalz \"English jobs in Rhineland-Palatinate\")\n- 735\n\n \n\n [Brandenburg](/in/brandenburg \"English jobs in Brandenburg\")\n- 721\n\n \n\n [Hamburg](/in/hamburg \"English jobs in Hamburg\")\n- 579\n\n \n\n [Saxony](/in/sachsen \"English jobs in Saxony\")\n- 517\n\n \n\n [Schleswig-Holstein](/in/schleswig-holstein \"English jobs in Schleswig-Holstein\")\n- 468\n\n \n\n [Thuringia](/in/thueringen \"English jobs in Thuringia\")\n- 248\n\n \n\n [Saxony-Anhalt](/in/sachsen-anhalt \"English jobs in Saxony-Anhalt\")\n- 241\n\n \n\n [Mecklenburg-Western Pomerania](/in/mecklenburg-vorpommern \"English jobs in Mecklenburg-Western Pomerania\")\n- 179\n\n \n\n [Saarland](/in/saarland \"English jobs in Saarland\")\n- 62\n\n \")\n\n [Bremen (state)](/in/bremen \"English jobs in Bremen (state)\")\n\nIN OTHER COUNTRIES\n\n* [Austria](https://englishjobsearch.at)\n* [Belgium](https://englishjobs.be)\n* [Switzerland](https://englishjobsearch.ch)\n* [Denmark](https://englishjobs.dk)\n* [Spain](https://englishjobs.es)\n* [Finland](https://englishjobs.fi)\n* [France](https://englishjobs.fr)\n* [Italy](https://englishjobs.it)\n* [Luxembourg](https://englishjobs.lu)\n* [Netherlands](https://englishjobsearch.nl)\n* [Norway](https://englishjobs.no)\n* [Poland](https://englishjobs.pl)\n* [Portugal](https://englishjobs.pt)\n* [Sweden](https://englishjobsearch.se)\n\nABOUT\n\n","type":"text"}]}✓$ curl -s -m 20 "https://englishjobs.de/publish-job?format=markdown" -o /tmp/pub.md; wc -c /tmp/pub.md; grep -iE "price|pricing|cost|€|eur|api|token|key|plan" /tmp/pub.md | head -30✓└{"content":[{"text":"1594 /tmp/pub.md\nReach qualified English-speaking candidates across Europe and Worldwide\n* Post jobs in 14 European countries\n[See prici…ctrl+o
{"content":[{"text":"1594 /tmp/pub.md\nReach qualified English-speaking candidates across Europe and Worldwide\n* Post jobs in 14 European countries\n[See pricing on englishjobs.com](https://englishjobs.com/#pricing)\n","type":"text"}]}›Thinking…
For pricing, it's directing you to englishjobs.com/#pricing. Let's fetch the englishjobs.com page and check whether an API/SDK exists. Also, let's check the footer of englishjobs.de (the ABOUT section) to see if there's an API link. Let's look at the footer links in /tmp/ej.md, and fetch the English version of englishjobs.com in markdown format.
✓$ tail -60 /tmp/ej.md✓└{"content":[{"text":"\n \n\n [Pforzheim](/in/pforzheim \"English jobs in Pforzheim…ctrl+o
{"content":[{"text":"\n \n\n [Pforzheim](/in/pforzheim \"English jobs in Pforzheim\")\n* 1\n\n \n\n [Cottbus](/in/cottbus \"English jobs in Cottbus\")\n* 1\n\n \n\n [Gelsenkirchen](/in/gelsenkirchen \"English jobs in Gelsenkirchen\")\n* 1\n\n \n\n [Moers](/in/moers \"English jobs in Moers\")\n* 1\n\n \n\n [Remscheid](/in/remscheid \"English jobs in Remscheid\")\n\n## Select languages you speak\n\nSave & Close Cancel\n\nIN OTHER COUNTRIES\n\n* [Austria](https://englishjobsearch.at)\n* [Belgium](https://englishjobs.be)\n* [Switzerland](https://englishjobsearch.ch)\n* [Denmark](https://englishjobs.dk)\n* [Spain](https://englishjobs.es)\n* [Finland](https://englishjobs.fi)\n* [France](https://englishjobs.fr)\n* [Italy](https://englishjobs.it)\n* [Luxembourg](https://englishjobs.lu)\n* [Netherlands](https://englishjobsearch.nl)\n* [Norway](https://englishjobs.no)\n* [Poland](https://englishjobs.pl)\n* [Portugal](https://englishjobs.pt)\n* [Sweden](https://englishjobsearch.se)\n\nABOUT\n\n* [FAQ](/faq)\n* [For Employers](https://englishjobs.com)\n* [Terms and Conditions](/terms)\n* [Privacy Statement](/privacy)\n* [Cookies](/cookies)\n* [Legal Notice](/impressum)\n* [Sitemap](/sitemap)\n* [llms.txt](/llms.txt)\n\nenglishjobs.de\n\nenglisjobs.de is a website created to facilitate English-speaking professionals finding suitable job offers in Germany.","type":"text"}]}✓$ curl -s -m 20 "https://englishjobs.com/?format=markdown" -o /tmp/com.md; wc -c /tmp/com.md; grep -inE "pricing|price|€|api|sdk|developer|token" /tmp/com.md | head -40✓└{"content":[{"text":"95123 /tmp/com.md\n57: plausible.init({ endpoint: \"/api/event\" })\n109: href=\"#pricing\"\n110: onclick=\"even…ctrl+o
{"content":[{"text":"95123 /tmp/com.md\n57: plausible.init({ endpoint: \"/api/event\" })\n109: href=\"#pricing\"\n110: onclick=\"event.preventDefault();document.getElementById('pricing').scrollIntoView({behavior:'smooth',block:'start'});sessionStorage.setItem('ej_viewed_pricing','1');window.ejTrack&&window.ejTrack('View Pricing','nav')\"\n113: Pricing\n183: href=\"#pricing\"\n789: <!-- Pricing Section -->\n791: id=\"pricing\"\n796: <p class=\"eyebrow\">Pricing</p>\n1177: Custom contract and pricing\n1532: <a href=\"#pricing\" onclick=\"event.preventDefault();document.getElementById('pricing').scrollIntoView({behavior:'smooth',block:'start'});sessionStorage.setItem('ej_viewed_pricing','1');window.ejTrack&&window.ejTrack('View Pricing','footer')\" class=\"no-underline transition-colors hover:text-ink\">Pricing</a>\n1614: window.plausible(\"Pricing Click\", {\n1628: <!-- View Pricing scroll tracking (once per session) -->\n1631: var KEY = \"ej_viewed_pricing\";\n1633: var section = document.getElementById(\"pricing\");\n1642: window.ejTrack(\"View Pricing\", \"scroll\");\n1651: Two unrelated payloads share one round trip to /api/coupon/validate:\n1655: `attr_token`; we keep that in localStorage and stamp\n1661: var ATTR_KEY = \"ej_attr_token\";\n1718: // ----- Token storage -----------------------------------------------\n1719: function getStoredAttrToken() {\n1728: return data.token || null;\n1734: function saveAttrToken(token) {\n1737: token: token,\n1810: // Re-stamp current attribution token on the hero CTA, since we just\n1812: var tok = getStoredAttrToken();\n1871: var storedAttrToken = getStoredAttrToken();\n1872: // Skip fresh capture when a non-expired token already exists —\n1875: var freshAttr = storedAttrToken ? null : captureAttribution();\n1879: // about, even before the API call resolves.\n1882: if (storedAttrToken) appendParamToLinks(\"_a\", storedAttrToken);\n1884: // Decide whether to call the API. We call when:\n1886: // - we just captured fresh attribution that needs a server-issued token.\n1897: fetch(\"/api/coupon/validate?\" + qs.join(\"&\"))\n1900: // coupon-validation error can still carry an attr_token the\n1913: // ----- Attribution token (accept on any status) -----\n1914: if (result.body.attr_token) {\n1915: saveAttrToken(result.body.attr_token);\n1916: appendParamToLinks(\"_a\", result.body.attr_token);\n1941: // token mint this load, or the server returned one. If we\n1942: // tried and got no attr_token back (e.g. server-side\n","type":"text"}]}›Thinking…
There's an llms.txt. I'll grab it — it probably contains docs for developers/API. Also going to check the pricing section around lines 789–1180 of /tmp/com.md.
✓$ curl -s -m 20 "https://englishjobs.de/llms.txt" | head -100✓└{"content":[{"text":"# English Jobs Germany\n\n> English Jobs Germany is a job search platform for English-speaking roles in Germany. It helps non-local speaker…ctrl+o
{"content":[{"text":"# English Jobs Germany\n\n> English Jobs Germany is a job search platform for English-speaking roles in Germany. It helps non-local speakers find work. By default, it searches for jobs requiring only English. Users can specify additional languages they speak to broaden the search. You can search for these English-speaking jobs by crafting URLs as explained below.\n\n## How to generate search engine results pages\n\nTo generate a search URL, follow these patterns. The base URL is `https://englishjobs.de`.\n\n### URL Structure\n\n1. `/jobs/{query}`: For searching by job title or keyword.\n2. `/in/{location}`: For searching by location.\n3. `/in/{location}/{query}`: For searching by both location and query.\n\n### Path Parameters\n\n- `{query}`: The job title, keyword, or skill to search for. If it contains spaces, URL-encode them (e.g., `software developer` becomes `software%20developer`).\n- `{location}`: The ID of the city or region. Must be one of the values from the \"Allowed Locations\" list below.\n\n### Query Parameters\n\n- `include`: (Optional) A dot-separated list of additional languages the user speaks. This will include jobs that require English *plus* any of the specified languages.\n - You can include up to 4 languages.\n - The language values must come from the \"Allowed Languages for `include`\" list below.\n\n### Examples\n\n- **Query-only:** `GET https://englishjobs.de/jobs/software%20developer`\n- **Location-only:** `GET https://englishjobs.de/in/berlin`\n- **Query and location:** `GET https://englishjobs.de/in/berlin/software%20developer`\n- **With additional languages:**\n - `GET https://englishjobs.de/jobs/software%20developer?include=french.german.spanish`\n - `GET https://englishjobs.de/in/berlin?include=french`\n - `GET https://englishjobs.de/in/berlin/software%20developer?include=french.german`\n\n## Fetching pages as Markdown\n\nAny page on this site can be fetched as Markdown instead of HTML by adding the `format=markdown` query parameter (or the shorter alias `format=md`) to the URL. The response is served as `text/markdown; charset=utf-8` and includes a `Link: <html-url>; rel=\"canonical\"` header pointing to the HTML version.\n\nThis works on any GET request, including search result pages and individual job listings. Static assets and machine-readable feeds (`.xml`, `.json`, `.txt`) are served unchanged.\n\n**The `format` parameter must be appended to every request.** Links inside a Markdown response point at the canonical HTML URLs (without `?format=markdown`), so when following a link you must re-append the parameter yourself to keep receiving Markdown.\n\n### Examples\n\n- `GET https://englishjobs.de/jobs/software%20developer?format=markdown`\n- `GET https://englishjobs.de/in/berlin?format=md`\n- `GET https://englishjobs.de/in/berlin/software%20developer?format=markdown&include=french.german`\n\n## Allowed Locations\n\nBelow is the list of supported location IDs:\n\nCities:\n- `ingolstadt` # Ingolstadt\n- `chemnitz` # Chemnitz\n- `paderborn` # Paderborn\n- `saarbruecken` # Saarbrücken\n- `ludwigshafen-am-rhein` # Ludwigshafen\n- `braunschweig` # Braunschweig\n- `regensburg` # Regensburg\n- `koblenz` # Koblenz\n- `augsburg` # Augsburg\n- `trier` # Trier\n- `muenster` # Münster\n- `halle-(saale)` # Halle\n- `remscheid` # Remscheid\n- `moenchengladbach` # Mönchengladbach\n- `osnabrueck` # Osnabrück\n- `essen` # Essen\n- `kiel` # Kiel\n- `ansbach` # Ansbach\n- `hildesheim` # Hildesheim\n- `nuernberg` # Nuremberg\n- `kassel` # Kassel\n- `duisburg` # Duisburg\n- `pforzheim` # Pforzheim\n- `mannheim` # Mannheim\n- `wuppertal` # Wuppertal\n- `siegen` # Siegen\n- `moers` # Moers\n- `heidelberg` # Heidelberg\n- `bonn` # Bonn\n- `bremen-kreisfreie-stadt` # Bremen\n- `reutlingen` # Reutlingen\n- `stuttgart` # Stuttgart\n- `bremerhaven` # Bremerhaven\n- `bochum` # Bochum\n- `darmstadt` # Darmstadt\n- `magdeburg` # Magdeburg\n- `rostock` # Rostock\n- `cottbus` # Cottbus\n- `oldenburg` # Oldenburg\n- `erfurt` # Erfurt\n- `dortmund` # Dortmund\n- `frankfurt-am-main` # Frankfurt\n- `leverkusen` # Leverkusen\n- `aachen` # Aachen\n- `karlsruhe` # Karlsruhe\n- `bottrop` # Bottrop\n","type":"text"}]}✓$ sed -n '789,1190p' /tmp/com.md | grep -vE "^\s*$" | head -200✓└{"content":[{"text":" <!-- Pricing Section -->\n <section\n id=\"pricing\"\n class=\"scroll-mt-20 border-y border-line bg-mist px-4 py-16 sm:px-…ctrl+o
{"content":[{"text":" <!-- Pricing Section -->\n <section\n id=\"pricing\"\n class=\"scroll-mt-20 border-y border-line bg-mist px-4 py-16 sm:px-6 lg:px-8 lg:py-24\"\n >\n <div class=\"mx-auto max-w-7xl\">\n <div class=\"mb-12 text-center\">\n <p class=\"eyebrow\">Pricing</p>\n <h2 class=\"display mt-5 text-3xl font-bold text-ink sm:text-4xl\">\n One job or hundreds. One company or ten. All for a flat fee.\n </h2>\n <div id=\"coupon-banner\"></div>\n </div>\n <div class=\"grid gap-8 lg:grid-cols-4 lg:gap-6\">\n <!-- Starter Plan -->\n <div class=\"flex flex-col rounded-xl border border-line bg-paper p-8\">\n <h3 class=\"display text-2xl font-bold text-ink\">Starter</h3>\n <p class=\"mt-2 text-sm text-quiet\">Get started quickly</p>\n <div class=\"mt-6 h-24\">\n <div class=\"flex items-baseline gap-1.5\">\n <span class=\"display text-5xl font-bold text-ink\">€99</span>\n <span class=\"font-mono text-sm text-quiet\">/month</span>\n </div>\n <p class=\"mt-2 text-sm text-quiet\">\n 7 day free trial, cancel any time\n </p>\n </div>\n <a\n data-trial-conversion href=\"https://app.englishjobs.com/auth/register?plan=starter\"\n data-plan=\"starter\"\n class=\"mt-8 w-full rounded-lg border border-brand bg-paper py-3 text-center font-semibold text-brand no-underline transition-colors hover:bg-brand-50\"\n >\n Start free trial\n </a>\n <ul class=\"mt-8 flex flex-col gap-4 border-t border-line pt-8\">\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span><strong>1 active job post</strong></span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span>1 employer profile</span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span>1 location</span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span class=\"group relative inline-flex items-center gap-1\">\n Available in 14 countries\n <svg class=\"size-3.5 text-line-strong\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 16v-4M12 8h.01\"></path>\n </svg>\n <span role=\"tooltip\" class=\"pointer-events-none invisible absolute left-1/2 top-full z-20 mt-2 w-60 -translate-x-1/2 rounded-lg bg-ink px-3 py-2 text-xs font-normal text-white opacity-0 shadow-lg transition-opacity group-hover:visible group-hover:opacity-100\">\n Austria, Belgium, Denmark, Finland, France, Germany, Italy, Luxembourg, Netherlands, Norway, Poland, Portugal, Spain, Sweden\n </span>\n </span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span>3 team members</span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span>Basic support</span>\n </li>\n </ul>\n </div>\n <!-- Standard Plan -->\n <div\n class=\"relative flex flex-col rounded-xl border-2 border-brand bg-paper p-8 shadow-lg\"\n >\n <span\n class=\"absolute -top-3.5 right-6 inline-flex rounded-full bg-gold px-3.5 py-1.5 font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-ink\"\n >\n Most popular\n </span>\n <h3 class=\"display text-2xl font-bold text-ink\">Business</h3>\n <p class=\"mt-2 text-sm text-quiet\">Best for most teams</p>\n <div class=\"mt-6 h-24\">\n <div class=\"flex items-baseline gap-1.5\">\n <span class=\"display text-5xl font-bold text-ink\">€149</span>\n <span class=\"font-mono text-sm text-quiet\">/month</span>\n </div>\n <p class=\"mt-2 text-sm text-quiet\">\n 7 day free trial, cancel any time\n </p>\n </div>\n <a\n data-trial-conversion href=\"https://app.englishjobs.com/auth/register?plan=business\"\n data-plan=\"business\"\n class=\"mt-8 w-full rounded-lg bg-brand py-3 text-center font-semibold text-white no-underline transition-colors hover:bg-brand-700\"\n >\n Start free trial\n </a>\n <ul class=\"mt-8 flex flex-col gap-4 border-t border-line pt-8\">\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span><strong>Unlimited</strong> job posts</span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span>1 employer profile</span>\n </li>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <svg\n class=\"mt-0.5 size-5 shrink-0 text-brand\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n <span><strong>Unlimited</strong> locations</span>\n </li>\n","type":"text"}]}›Thinking…
Good info. Pricing structure: Starter €99/month (1 active job posting), Business €149/month (unlimited), plus there are other plans — let's quickly grab the rest of the pricing section (there are 4 columns — Starter, Business, ?, Enterprise "custom contract and pricing"). Let's check around lines 1100–1180.
Also, is there a developer-facing API/SDK? llms.txt describes URL-based search and Markdown retrieval — this is a machine-readable workflow that I can work with (no auth required). The employer-facing side (app.englishjobs.com) is a paid SaaS for job postings, but there's no publicly available API/SDK for that. The "product" here — the user was asking me to build a simple example using EnglishJobs.de. The llms.txt workflow (search URL + format=markdown) is a developer-facing workflow that I can work with. So, I can build a simple example script.
Let's check the rest of the pricing tiers, then build a small example (e.g., a Python or bash script that searches and parses Markdown) and test it against the live site.
The site provides an llms.txt describing a machine-readable workflow (search URL + format=markdown). This is something we can leverage, and there's no local stack or long-running processes involved. Let me fetch the rest of the pricing info and build an example.
✓$ sed -n '1000,1180p' /tmp/com.md | grep -vE "^\s*$" | grep -E "display|€|euro|month|strong|span>|<h3|quiet\"" | grep -vE "svg|path|circle" | head -60✓└{"content":[{"text":" </span>\n </span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n …ctrl+o
{"content":[{"text":" </span>\n </span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span>5 team members</span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span>Priority support</span>\n <h3 class=\"display text-2xl font-bold text-ink\">Agency</h3>\n <p class=\"mt-2 text-sm text-quiet\">Manage multiple employers</p>\n <span class=\"display text-5xl font-bold text-ink\">€249</span>\n <span class=\"font-mono text-sm text-quiet\">/month</span>\n <p class=\"mt-2 text-sm text-quiet\">\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span><strong>Unlimited</strong> job posts</span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span><strong>Up to 10</strong> employer profiles</span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span><strong>Unlimited</strong> locations</span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n </span>\n </span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span><strong>Unlimited</strong> team members</span>\n <li class=\"flex items-start gap-3 text-sm text-quiet\">\n <span>Premium support</span>\n <h3 class=\"display text-2xl font-bold text-ink\">Enterprise</h3>\n <p class=\"mt-2 text-sm text-quiet\">For agencies managing 10+ clients</p>\n <span class=\"display text-3xl font-bold text-ink\">Contact sales</span>\n <p class=\"mt-2 text-sm text-quiet\">\n","type":"text"}]}›Thinking…
Current pricing structure: Starter €99/month, Business €149/month, Agency €249/month, Enterprise — contact sales. All paid plans include a 7-day free trial and can be cancelled anytime.
Next, build a simple sample. The developer-facing workflow is read-only search via URL + format=markdown. Write a small Python script englishjobs_example.py. Contents:
- Build a search URL according to llms.txt
- Fetch it with format=markdown
- Parse job listings from the markdown
Let me check what a search results markdown page looks like so I can parse it.
Now let me check the shape of a search results page so the example can parse it:
✓$ curl -s -m 20 "https://englishjobs.de/in/berlin/software%20developer?format=markdown" -o /tmp/search.md; wc -c /tmp/search.md; sed -n '1,80p' /tmp/search.md✓└{"content":[{"text":"63691 /tmp/search.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/i…ctrl+o
{"content":[{"text":"63691 /tmp/search.md\n[\n\n### ENGLISH JOBS GERMANY](/) [information](/info) [post a job](/publish-job)\n\nsearch\n\n# 545 software developer English-speaking jobs in Berlin\n\nInclude languages [+]sorted by: relevance · [newest](/in/berlin/software%20developer?sort=date)\n\n### Note\n\nSome links might not work from outside the European Union.\n\nDismiss\n\n[### Solutions Architect](/clickout/fe5c13254847526e?ql=ql&sig=REDACTED&e=xnv65yk2tC-jUsV5VUTdjDUNvHNJ59VcGI50LAabFvq342aRPSlHA41YAQpltaA0vypNPlJqo66PzzqDqaENggm5Igq9S5mrj19EY5MQT-bHI0UQmp5d7YzMUIynwECVBtWu-6j_FMsVcqFAhVw_JRqL-OxXoXgnyv-2BlQWz3ZXTGou5hDO0dqfumwFmOsnqzyzwrbFfzdzJHBqwR8o8x9bDcPpq0QGgJAL3_aWtec2UFWb4x6BNCeQgRzTRBEEBK2TPHNcUaXDj4QyrNuUUATIMlqEBkFIIcpfCydbaqYuZyPEzHzpLloV5iPPw4CMd0UrdneD1XlM8thhrl1f7pzpH3ivVSduignyOfIS8EXSK8xORHR9AQAiDklk7K3VZBLeTZBxvrFvSWOAbwYGR0GZ38_4u0_65-rkAa0_b-zkM1CrR5_n5D6H78fjLIFQfhX5lH_RpD1nTrceLREObMhbZ23CrrGLC5pe96SrFJkomfW-yRQ24noQ_xnO_CzfjNW3ySAfBdkV9hamtyPd1D73ezqeQkyj-X6K4JDbKdszeI_oApRd0GfnIyKOVNt8qITGLsfmOHHb5wAKT2lx9vydBjvt_Fsgh8gCB6EAh7oeVfQ01MSA-RObXX0G_Gyg18MZJCUyuaq8fAUcRybXb-EJSTLdZ5BMwhr2cd2a5VxTsCZ_DHrEoBAqka4YdV35QkcYxk1MJReYcq-sbVGFk5jwS-NtcH5eNqmNgZLzcErd5-zAIbh3wmrkgHPK3O8OuF7Jq_9aCfXlporEe20gHWRsE90CZo8hEhQZwnlA6LfUeoQzB9zipWKL394epjdHmgU9G6AhiJUg1lgruX9EtngsVgMhCd6pM1RbH_RZxV4q57g63Rifi8CjR6y-CtjUxWr9HZvRl1kSRy6Bo6D9jBqOX_RtWiaO7hBAgsgJ94vPC2gzY3moP-YEbyR9bEf9hbGCESHDEK8XFI38nkZFqD5wVF4Z_laRF5TFXVxsLMrDqo9DWR_TNePcKXeKzh_PPMf7maUYw6irBtYP7gqGiBM4yRal0TIfQM1WjnfcUKCAEfjreccS8ryGTdOpXjPU7Z-79T5M5z7aewXXtuGqEyJK7JqaredgjrgORBXa0vMkwvXKCwJZ63lM9CCLSjpcqy-6P6xYRRYiqo_uNVWlxDDorcpQagKFM5h4MRwJbF9XGP_OyH-IEaOgYOfUCDAP0Qr-Y1CCZdlybwxDMV_5FM99M4oN-muOKP7JZ9os0NH3eBAHdM9s4oRBn3WIysN0kslBqiwD-ejaLpNDyTPrKqySJCuknzoKNQpYDvesQ2Z88ge7rj8FhelHSziqM6FyNLRxkqyvOVE1t8kSw_3wahHbS0AeAmueNoYglwOx5HPf4-CFM__nK6lHoeHU3SN1ck6L99Q&prev=RQ3A708875ACA7B6&p=1&pg=1)\n\n* HCLTech Germany\n* Berlin\n* September 11\n\n, Autodeck and *Developer* *Software* Distribution processes. ... Desirable Experience Previous experience as a senior *software* *developer*, technical lead or similar hands-on ... Provide technical direction to desktop engineers, *software* developers, business analysts and delivery ... Broad understanding of *software* architecture, application integration, APIs, cloud platforms and modern ... Experience designing *software* packaging, application distribution, trusted repository or package-management\n\nreport probem\n\n[### Security Engineer (m/w/d)](/clickout/7a667303fc1a6f18?ql=ql&sig=REDACTED&e=bkGp1TP1lnmwDP6mwor4DmApPSrJc4V5_YoWB5hq6AfIgP9iqsFUjAUkI6lZ_UkKM2CJOlEKizeyQs5ECo247zl-O0EeKb5W8oHRuX3-xIagqEaE9Gq_QvFptoNUHtXgLsUs0AwXf9RsR-CeCP1YgIasQl0L9HJ35NMOp_OUaiMSqZdfcDkob6ubPSlRmp4HHtu8X96VDyRa_DHk1k_TXARc5EYC8FdEYANtCudm3v4ymAlZln4csd3ZkLLuUzLOoyhFrHyooHmbhd3NwLhp05IjA7thHRHtQxXmHR50K4l7x3r22PqSCLHiVa2DqhHAYY0DKAP_Q4HYQf0lR9RRM1-PzVDCSiwGSQMZ4v6F6rpQfcZWbG9-G9dUJBoffRyaACGvIsFWNSHDGE9jXfJSxFspW5e4vIEbhz81UkbQW0q1r1l8UEs6Mdzhm2Yd4h8Zf0I-UIb7AyjY83aF-vAIQweigKHj3aH1e32_RlASJJtcqoxq6YweyNl4e9-hyP6jg_hOaaz_0d98TRFfzRIxK66GfNXiTcuWlNuVrwSWr8QVhc_MY6v7zxdXIW_XFNJFu-LUEzF8hkjCG2iHYGm9oqAnh2IxNzpva4WVl4ZLNHu5ghDYdDMA43QyTy0vt4NPe8kZE0eLEBWt8HBTagdAZV_Qb_erasvRVCc7DsMHyY8fG-TUYg-7LqIwJPU_Cbmou71zboLhkI-PsbEjtc_wAHLOVbGEImcirdVIfL0UXMd26l5lY4z4019ODWccTlLerg5tmMhvUfRq0QXjMjyUBoZJQhKvRfJx2a_HJecsmi3juaRlMZgpz_Gr56W6lsCKQpLLQieP0wxnQwrkdNTkLEPukD-EuHa-vC8qLxs5CKaV6ZnUB9gIgFpVU6pAa9uKel8gqcUsMhpc0JixJ1cqUD8Sv1L81AD42-qBqdwcHD6U3Vve1h3Ruzy45s1EHN3Gaudcya7dTLur1RltUl2aitSi7Cb7SnppD5twl1jGU2-nvKesDCch0Dh5cisPDl5LAm3FsElHtBl2KsJA1zVn0CuAy6sTwZC4FcVqa7g1vwCSFFvXv2gwR2m1gSLqT9gLGJEsopzVciSFRmi8Eyrjnh_PsliUU2a-5vs7hgzQ04NouVxaqLHfTy--lTNnH9lg7R4uiU7rNJSm0HKq2qN_kDQmwNr4FBldYkTpgoMrVzCqMVL-ZMAOMCBKlFmLpw-7PjOsPKv2YgLB79rscUXSdmSIUcLJcE9oCC853dc1UuIIvuUQpuAJcezdTtnxS2O_DGYBoALFQ4_bO6gjM3kbZrJ-x6iPO2rM5n37EVqKspaozk1exKJhM91k7UbF7zBJnGWa-CJl8GKeDkIQWRz2HAtGE3J9MjZgbcHYWy3qdTaB-GqnUwB6TjQ2CyzdGJ-LtTPNrHxJYauruhlc-2RN29DNxarSCEcGnL0&prev=RQ3A708875ACA7B6&p=2&pg=1)\n\n* PSI Software SE Grid & Energy Management\n* Berlin\n* September 18\n\nSecurity Full-time Tasks that will inspire you As a *software* *developer* for critical infrastructure in ... The PSI Group develops *software* products to optimize energy and material flows for utilities and industry ... Our focus is on modern grid control systems and energy trading *software* for the energy market. ... As an independent *software* manufacturer with over 2,300 employees, PSI has been a technology leader since ... Security Engineer (m/f/d) Aschaffenburg, Berlin, Dortmund PSI *Software* SE Grid & Energy Management IT\n\nreport probem\n\n[### *Software* *Developer*](/clickout/84fb54bef39c31e3?ql=ql&sig=REDACTED&e=4WCJ7bYIfXLIxrLD6aTWoBIVdi6LWy98GJvnXevIYKtTdwmOoxdMot594aWYmm0W0LAPVR7jObay-3uoAiiPWVEVJcUTBPr_1ZM3EghiR6oQFJohujw3wWtwHt3-wsaRCVdNwkINNw7TSsFgU5kHOAj_papL6qua-fun1Uu6LRYWTkncjlPiibr9aI-QklVawC8TZ4ArWLYjr0rlj3CPyRQsy2SiLSh1-W4IHMBS0T619NuZArCfTF0UlQHEVoKDGqfmCVTNHZHWKQXXQz4FGe8_klSjcJZse_I1FRk0kO2mRneWLkwHlkaZi8QjJZ8mPF8v4lRdE4aYceZztI1L54Kbo4fuydBQBLlmJOdSJRXtD9-rSFyAC2Dusk6WawhMcMxZixaFVGNcfWk8L3UXCrLo0gFoZOp4acHuJrb0r_zNos2Thco6BeDR6GYRzWlSTvrRIoxV24t86-MfAvtLn83uyjgFzLW0liu1y6Y6QOVUdJgPRzwI6he2kIxfRjwKvegSkx6FiH_EJqJP30ErxqScQb57K_mdbfiPZyLlDRKcRfhyIUjV7xabBUzETILWJC2mLrfFLdXBh3i4ImETjGRvxLCBj_BGfbubGX7ckR291vMj3Ome5FSzDi4_VCi4Dh-nZaBShYUXdL-aCjF2NUTl13wDcz8s6L5gJO_KpLPhIqODAdPQhn-RoEnp7VZBInXHUCoO8SFtNbitn33jxznEx2c-NNTEuWrSEOVjz9egLNkbqlYa6nEnKGXUBHUupqGSoo9iwDbAxZfsyTp7bNqi7JV9O4gdPVUQRlq8xpJyJ5PTf_COlH62LNlYmaKul-NJjYs6YozZ6IKLCAAWfiW2huVIDySN-N1ql5-xWFHND9bj_jgFbBMgJXHlH_UVj1WPDaK0tjq4IgRpC-oIYsA1UfvP0-Dl4E8_lY_bOw8JYkwzRS9bLjkOf0XhO3Hf-oQVTBM68vH4r4xpS6lM18ToQgaP1Bhwq5cReDtci6v6fwQTch-aFCb-xYXKgvB8iPu2lfDI6M-uT2wjdD8gA53-wS2rh5DveGE-YK6Y8HQ7P_IjK4ii4u4_uur0ENdnVz1dsuFXt2rw6I8u518TgpcrmoYQ4QC91KIw2srcgcDySkwaQ6uXehhm54crP-T_djjEgFUI987cosc93Mlf91bAI2Y1l-C5zXs0TK2XWCRkMAVXB4wXRs-8FC-ORXIh7ja4210wxuB8vvkr9vfvCtwTaYz9CkkPJMYVHT4Tsc7PicE6PLfo06jfQ7cx4whxIcaT9TuuCeFpO-s4qdO2nWakoQYSjX9P0kUzztMo4t4Z-epeqdtgx28w1fMF9vzLC8VHwj9X1Gf3FJdPqs-eG9vYzgFbAX5KZQJDkgIWjXkv6lyMR3IhPYTTe7A2wi3bEbauUIfoprYYkte--I35oBHYoNUfGQbOH-eKE8VL0KVWO0dGoLAs3ZqfI53ykl1TcTHPvC8dbNL36RJ7gGiVM5SSKo0t-Bs8HlAibddjN11cZKvdtPNMN990s4xCoCMVNr0guy_tSZlOV2C6LK2mkvuuptT8sSB9_2jn85jWvv_Onj-Ar1mLGWUeaHh9Ym_3bH64lUPJcVQlIwvXPHRyjs7T-gqKkcDbj_zLe8-5DS-VcB05p-JnK0daLKwJAa1buN1Z1OtRzTjmbztYVqW51HKZZY8hNRK_GXxybYg3gxg4obIDxCbUU8ZXWtX0XrNeobZ9M8j9Rua1XpovlsLmPOdLNacF8KCC0_fOXRHZuzkVXULHnfWtYrU2QzhwEYZXv7HccxBa6Y9s5iFZUsYynLmZHDtNZ9r84FqDaGFT_l-o3hr_LK8xnHpf_pWOtjSGj4lVdnapDVy2YpMO4LUWr6td1wyBOraRfio-lY3lTAX610uec37iHgn80jskxnxhXSvbMtNHxT_EW6yIbbPVNyHFKKDdE-Lp8Bl-KFAj0lNu4ulhSMwXcFqHDs3W3FCI0dUONiw68szE7wYZOxUFocCKeOukfZNG6E_GTStL8fuwZj7RqtfvKCHJynwaWMWFxg&prev=RQ3A708875ACA7B6&p=3&pg=1)\n\n* Turing\n* Berlin\n* September 1\n* part-time\n\nRequired Skills: 3+ years of *software* engineering experience. ... Hypothesize on steps in the *software* engineering cycle (prototyping, architecture design, API design, ... Project Overview: As a *Software* Engineering evaluator, you will create cutting-edge datasets for training ... Deep understanding of *software* architecture, design, development, debugging, and code quality/review ... Design verification mechanisms that can automatically verify a solution to a *software* engineering task\n\nreport probem\n\n[### Backend *Software* Engineer (Rust)](/clickout/fd783313a011c907?ql=ql&sig=REDACTED&e=ZcOFyNCmfQCzx5YBggM0KoMdj-5mD6cPGDiJUFT9O8BgLeIqUTXkiT_QD8IG-9bIPb94hPj6cA9Fx9vq9ZB8-rMbOKGLPRKXy2z6dXhPx5kovsQswUx7azejxa0zp7-s3HqTpdrZ5QHGIWgmDGQl0QFkG86DdbUh9JJSJsl_EttHBMN7UXL99eYPJk1KIJYyHT8dV_KXrdu3z6rIyXukPyylUkd_YF_XY3Zz0cMyefkzWepYvsQAy1OVqfyKRZS7Ck79B4XqBlMkBAiDXgbY8rfdxC95-N7flSK4R7CjdQYypsDIxGqsHTCoUTK91K5pQhlSbPQq6JB3J-l5XlSwi-VnQBLeAzoOzBen8mIkn63X6cOk7cZfPaiEGcQWa7K4qkyH0Hf-aDjzT-JDk83jRWBZ__os-TISUUNZ1voRavcBufBJS8TK1xqznxvG6AqTqdtIe7HOBk92f2UlZJnRv6KjQ06UNAwugbgKLJcgwC_iZBkIbLe1_NXNr9pYdlhY1SS9x6q9gk795wvftiJsObnS3QxbStDMu5VihPyVj7s_HYiUqCGD24gxGHrP8Ts5QWnf5m_Lef2Rj9RwvVSOT6fEQhWCFwI6HMxRCyglqNRhxjZAQ0Ye-t_z7d2Q5euONlNxJS-6Qbt31PiFLtcufXkZTmaa6dbf5rDhMp0exxDg5LUSQKP5hsCsYZ2CNUeDHQu6bWl7tqc71C4xOUmZy19WhwLb7lA3sAqQ-V47A4xWXoaxO37ncI56i63sOd2xVqFIfcLPt7nj1hz_-ObNSixFIiUGBaz7qEec9WHyjAbFsgmvCbOR6nhgbJty6MnXIWYtRecnNKbSxg3Jbz6N4KP-PE_v26iJaJ6QqWDCcXqzWl1TNn76Nt95It-THbsukLjnLIyp9hJGKiUhaGClmpLuZyh-lXO3r0mLEVIlvRVMyG-fwQ66HOTtawKmyvbolHKvlViH4x_cyAMmDD_1bvaBg4vxoct71B-rGjmRB3dIAxxtv8dX2sMQZy7JFWbMyXvW-GvA0b2DCfBx1V6vAdoS_XAUm4YPzuCgwLyoZ-KN0aQQ81PMV4rslCXOu97kdNPp0KH4mfDnaog1_bvDIckwZ58Y8thxL3dv6EuzNP7QF0avLREqV2KgJzlyn-hCzUHcLEpGIKPRLdLve6j8mM5mXRvFvcJop6EuXdNxUqDoXBPrmw1kqDk9X56ekCaiQDCH4ayMaAc-5Ph6zP5YkyqNZQ_fwagLTY6PBepJKXikect2DI2GmxyTOgugJGg-7xDdVzGhmLDcwYxxoJkoztiHqCCAVXmLFFxK8V25vrLQCKI1XBfQ6Tpc30yYcwUDPPxLxVFeboAdDYQ72Z9W3Ju_PSoSA_ZiqPAlkqMROgxDBbrskNGvdPDY6mbR8ZRQjnOy87JcEJvtkHNDmkxzDbfiJdZCB2Kc3Q9bXctEIHQzvrM-AykyG9svhu53LrxOOAB69e59g08P4Ww7rCWM6e1DSsQyPeZxchvYmA7HwAENS6613LtELZDybazsAHTaVYQcBLA8bZZYeiY3ZCHT50bNIm6EC7bDuUuHOV2mtlj457yVM_w1EgTm0OSKKnchp3CtQS76LsLOe75Rop2oKr-nAm7ELMbCi6wcLr2HkrkuxWTJjDEyY4UJacYIG98k0sS4jUwy_XGH5JR3kLnirtRlAQZxBVf51BPzEf_iQtY9_bsWfbMO5q8BCQqsvYWNhmE_d5tsgBrECwmEVJBRjmb8mPeIzUt6nYrghjw06Wrbjiw109K_tPMvCfb6zkNA8cxbRBtQJ3xDIofViDNxtzjcFSjjVYZnvlzPrh4dQDuqfoIQlAvT2zWTPPhjVEO0DAn8XKRXSltxVRSBcCePDJ0dS2RMrQYq76xIHHrbypv2e2mcQczkSrIe5OwQ_DmP7aGm0Hklk1b5YCtc1J8BUnGJ-sMtmWvgCtC08ef4v_f8mMIYP2fX9i7eXvoN3QKdGo305lDVv7k92N9yJbN-Tv37pF6aB4yYMGwzZ3ZYWlTIo7E_UbjLtW1oVjaRERT61Q&prev=RQ3A708875ACA7B6&p=4&pg=1)\n\n* WhyBrilliant GmbH\n* Berlin\n* September 10\n\nAlso searchable as: Rust *Developer* · *Software* *Developer* - Rust · Rust Systems Engineer · Backend Systems ... Engineer Original title: Backend *Software* Engineer (Rust) WhyBrilliant is sourcing applicants for ... The Role Job Title: Backend *Software* Engineer (Rust) Location: Berlin, Germany Why this role matters ... You will be instrumental in scaling our core services and ensuring our *software* runs reliably in demanding\n\nreport probem\n\n[### Security Engineer (m/w/d)](/clickout/bd07089f7d60a882?ql=ql&sig=REDACTED&e=bK9DowuzAGl2Ab7tmNK_9agJXwDqFJBdWdFBfkR__FWwt2LKVQIYMskYKB120WBgAif8P2I-In2QzdBC-pSuv4ye2sdQH5MVe4LYZDnk-IMQba48C60v3waYzJ_VE62cJuMVfgGQxNWz1cShVar0JBC5jBEWIFRx_qWa9Kw2EryDrxXR8Ke_lRSfh02zBsCUfMPlV9c6W3GFTxPp0pEjxEZ3dfL0xzzso81Ib0_nleIFtFQ0dHiTGoCdBlLKQsh-6N__wCftXXJhlA1EtOsySAKm476KDmaEel11qIyEeSNwdgboM57IWv7Mf5oPgmGZgRG1XuJSrunKGBXePUc0Xz7A0pYQZxJxfs71reS-l5vVGUUmjPIP1E5P6vLhrJz6x8xRXaZOxSy_VAy-LmRYmTMQwU2Ev6mb3zVOymapkDWsWpymCJHyvDEBT5ayD0xK7wRwXj06fbXbn9tIC46ZJcGZy6KPmzdxqMaWrG_SaXx2rjHxP5oAfwBqn5Czdz8XTCO8XSbGfQbCfEfwJ3GPyeCXc1KPa-FbGLWbzSjwX2_u6E0JbxqAV-iuM8B9Ws9X1JmRFN0Vu0d1jLebdVqnZKKPCgqih6LshsMJ_wegX2cDu0XnhiJz7K6kDTTancOZN5z3BsFmL1tar5x85nbqm1HNi6zWfUwu4_pYSeiCGnCDLJIvg3iCFqxNtI44mfz7sj7XSP6BMnH_2S2XeXZDdyShMhNnqZQrcW9QOGUky_1Z7dOAs0a4GypvhzDZU06dA1nU8QGSNMjOI8GVGCI8uYFTl9QJmOtbDYlseB2cMXgLwgTwIUiSyiXYfwW7quLKjsA1Ra-qiQxVKUF7pyUq9nAKu0gHiEH8HZZJ89DtjCf7B9VZ3jxu4OSzHXQv-c7bKGo-vGOopEUdYroOoWwUdPcCKY4Q-jPUQ28Oc43_NZs8wPjPJqpcKHEujC49M67-M6hYIeFhQC7TG3pjHh__jX-0wANUvJTFDzKIljEadNZmeh_FfVZDAk6CStBDwNTSp9kKttThcEffY7bY6UqbAp-UVyCsYvbgIAVndaj5heAJ5j47OLqkSBuxKqRrQwTaLy3NRZPG-VEeBtNvj0WASpfDcYO0Vq3E2q0842Sl-sW69cBEkPTHD9MhJvKEUgXYsqNetK2om1aU7Orl4QwPpsdF2eh6ZEu57YNsf1NByBJyq1OqEj8iEFoXxRE_hyzYIWLrBYB20INGJkyb-RYbGQ5Kcm42LifLaG4ViRBWEEeKyPHOr6GBw8SibbVIXjd6Kwfr6KN952t7DHX6JNMtnIVvBtpNBi-E7FdGs3nIqbwgQnh9CacpVEIu6s4lnh7brdV_JmsaXvHtkebyofH0ers0RSEViLnFMwh4R96DeoP2s2tOnZrHWJEmNeljoORPL1T04U7B_G1Q3bU4Qh30-U48sjve2cPhXSk&prev=RQ3A708875ACA7B6&p=5&pg=1)\n\n* Vertraulich\n* Berlin\n* September 19\n\nSecurity Full-time Tasks that will inspire you As a *software* *developer* for critical infrastructure in ... The PSI Group develops *software* products to optimize energy and material flows for utilities and industry ... Our focus is on modern grid control systems and energy trading *software* for the energy market. ... As an independent *software* manufacturer with over 2,300 employees, PSI has been a technology leader since ... Security Engineer (m/f/d) Aschaffenburg, Berlin, Dortmund PSI *Software* SE Grid & Energy Management IT\n\nreport probem\n\n[### Junior Quantitative Researcher / *Developer* – Systematic Equities - Eka Finance](/clickout/ab0c5cabf0f3aaa2?ql=ql&sig=REDACTED&e=MdMkWLuIM6GdbM2DmvK601-FlhOvrDhD_sjJF42l2FX_97XVMuJhf0t0BSzxvMK8YwrLswy1h5mt_SflXrmgtAx2zMGMp2dBKmCgvyTWfx6OLh9t7gjmHh1u87J-s-qQAsufpQxnY0kx9LZ8dFxUIcZpDD9HJA1XS7e9qFnclsBzcDNgldsIkFCtzGyFVYDQvgsjrEEW9cbOg2kCzYdEMB4KBzOlMTgkUHsamz3LW2Tb9_4bvBLy5bWg42pQQb_zKnOKB42Edp0Ef2vjn5f6GAL7oEzBTwrBkaGxexQMVz6RbZC22tlhRbBZ0seqH1szB631fRn1h4p7wcWbwID4BLgPCZWRetU9WI7xNHAFvHL2VSEgd1DwUAjecaeBmGbvm9u4GXYm98jEt87k06yR4AoqBv1y5pP8RKF4ZUMz7aoHkEP4kFuTaFUg9Hypmm_bs2TwOBjyslAHm70o83GV9ISAqQAw49fPW-H5NnWjKCQ_aqqKZg0hP6ZFC9It-SjmWnJCkJzOCAlI-ihECY-CJMvaIQTUnRz9IWvfh0KMl6nPb5v4CsYHlXzdMIBBu9tCWSl7XkgeUdyC-mRDsxoDGb-ii0hESBlUPsbfmMocKfg9AFWaK3lutkNYMpU2TrtruT8fbbydHXlydSaJrtLON168CUp_s81dSiAlU8_2qPmxMHKiKPrMtiGLDn2DihddJvw_pYnHXC2V-cyl03ekjLYrASoEKM4mkJ2Z0xKmlBTtBEePyghKTiBDpMTakdWMFfz2of-M5kS8K-BgNdCAg61qj2JG0nVYBrSNI9UlzCDWA8nAEaEgEqscogjfgl6DCvBOeM-ykG5YDUmNJHZWX4ubtgl3Z65PO5iGkeQGhT-P_rpJWNcGqLMeukMWi3-fPUZVM2RzYNPeZ9efkZL6tlRIbzR0CiyGi8Wb3_GhV4_VYdotLrENqVeKgw6vvc8URpVwm4rbIVwI_lNM1olNZqoCZL_0b-8D6DwjH1kKbg3fOCV4eDWAbidqUqvGoSiEeLkE5gV3vems5aC2icnaya7QYzaKsBprZok167eJDo_o4HbUhqb1NXzu6ufYiSqbJOMTatKS3smRspCFixUZP8Zh7K14LuRJloUytdlXiptclfEIbUPXhCPzkdNWsBi0Dm_xJUlFMur1Y3q3QulDYsspLKs0kNBe_Zojv_rHigEMquSzwNb2Pr3LM0_gOhoWXE3mtFFD8FPe-zx0DVWbH_4STsk8QA9btI-eR1vXATSqS7ykAF6VSDG-JlpKaHuc5SVQG3xQQ5gGDF13Me2dL2GBXEdDb5Mt6bXbsC976twRNAAyRW-Vm8sRUQy_VhtYik0fVvmjWd5Zu-aFGc_kLqfpRlbSNaNu3NDFeyZMU7r58c4rgBibxR5_Rp87c9GiU3JtA5yWHvVlfLmUGXjUsXnzlMia7xBxWnb8ExUNnXtDxUwefE5qaBIQIQ4JTZnFn-tKuECOhf0gD2VkmWalwrsVWmzOEX22B5WjCg&prev=RQ3A708875ACA7B6&p=6&pg=1)\n\n* Eka Finance\n* Berlin\n* September 11\n\nA leading quantitative investment firm is looking to hire a Junior Quantitative Researcher / *Developer* ... that feed directly into live investment strategies, combining quantitative research, data analysis and *software*\n\nreport probem\n\n[### Principal *Developer* Experience & Platform Engineer](/clickout/40b788fa1148ee20?ql=ql&sig=REDACTED&e=57wOu8LaTZA9uLAOTn_YsOUshhKUH-eDZsq-Is9XCBZ1X4-G3habIVRRR4g6qRtEy4fTOLAX67vAYm3NP3R1a4H_eUDGsqoZaHZovssEznkxbVS7mhme72qqraYOsaDvmK9E1tFhSsoK49xwQBlBlSsFCeIQTSJG5Qq9oKVOoY0AgwSQl8Zu1x0ZSf2MMWZdyOZ2rzzhUoYwlvtKFPX_e2euJF7Mvm6YFb5m9eHHhR1JtHbOWrQomruaVkmgFgnsKQ6yHJDqkvkaISsXAfkIBTs01ZoMZT2TIZgSoN1ZrrB0elhDO0HZIkkefUFS9_DilLcMYCztRqk6UPEBj7JMxBNCucDzHkI7T9zdoD5lz5rIg5Dc5Xlr_heZCqcnR4-w478bt-lugqx7NyOqrXe9vjZb3y9tAvWPGmn3ZK0HVutKaiPGGyvmnVJFDqwmL6Yc5xoi8ezSnXLcMppU7UkRTORNDm5ZAHUTHcGmuDHr3GF2xGj3HbcspRMEZfZqNlS2UcMvca89L6YGT9w1LExF6q_h00aNDYBvX4J5s1r8eKT-0uoacQx9KkHpsyFsOqCHFR89212SXjJBYkVuKo-ZSNGnpQLBOoarLeGgk_QbTX84PU12Jx1NPaGkIb92T750H19crxICeiLTUC_xJyBuhTeOLLyS0XnEbFKM9ii-DzkeRwK38xU4sBiY6E6WXjl5VoZtWytfPf7COktcqLBbmU_NZHoMN2IrwqM__We4BYA3KURawA5823Q6-G1CVwhZQZzSKP5jw6bGPv6oOofST8lsv9_Vq6DKfVxk0AGRJvNCMPvsVhral7XaL9k7uNRjifY1aLio_xhgaOzblnSKUzT7R76HSxiI6Rr0evDPOK8hXsV4g63lOv4Lwa89h-Xm7gBW4ZQKNiKsTjE_qWPf-DuB1tdWWnXoMuq9-49m4hcJ3monVERioBHLqcf4TrYQ-SsX-JQC_gA560QCGWWehGj_i-A7gtpuq10IzHt1uAPeKeGJRp-XCVjQefwOp7SI2C1waSfrozycaxSNVVEx_iIX75VRqTyGGNqbok6VghsE93VQ3XS4SGP45R0aqhTeO1zVzprtPEHTtc6AIlT4u4O4z8CZDWq2VOHAqCRBoSz4eic3krkv0iUX8q0X61xoL0Qbi3yQzDXMhSP4_jg6sg7n6-nvUYwaXDhnVQbSTyySUC-rXjysmyQQwktokBGxdOluSY5lutV11FvmY5yBYinkJRaLvN4gycHtNzMVHz3WVY-9GC4xSFH9iN4OGDrethDptH7l3mI4P-ZU0V3W0rFYMXnJIPNzKrfD8mLr-gfEM1Ndl4CwQKylYO3OjDod_uvsSyXG7vfvqzc18eSvmJNN-GwpfHV7C--GvcFXlADKWjYk2mCBNxsRI4RE4evPWvmup60AgJf36FRiF_2w5jvVpTcVbUiJDc1pzy99ni6aJlWEAEJ-JYnpbWxRwHoQJQxPdBgahGCrgnyL4kO1PuEeTkNITMswqzBgBmTj5DhDH9jusBvt0yf9L7jHK7YZi-Zh-P64L6NEA_DYnazf-yyogEqjruOSPx8dw_TvIjPwMBMroVSZUYjHgi_WuPBApffrmdH0MTAc012dvNLvWr_IpAwPtyQjglUjCgahh4k3eGJY9_uK2UZYwIiOUFF681VuUmOzXx6ReeQUWgKp2_KyWMS8irBCzlEeG1MKUelOqFxhhXCnixBZnNXw3v4vZv5O_ci8O7J_sf2_BG71xnK7aOLKe3g6G7r_vuwLenw1KiCZGp4BTKaTrUbnAyxIBAKAqu17AYUBB5lxHwOBHTZTpLoPh5sNaCv_RoaRtO_cQfNzjRfBQAZd1DA7xQ8kB1rj5VCXIAZ0wUwgrpQj7uV0f903pdb9p0kv7ZAGPCFAnrJUjBpBofWGlCdBv0TDVLRErGKddzu923Gs6iT87Ec32RhuozMtnsJAw3oxMImaiZ-KwaGEMGKa1oL3ICLPqrdEEW61ySsiBjF3hKZEEshnFuWyH4ZW-rRR_ZVfI4pNz_W3f1TacYWf9wkOVbNs4w&prev=RQ3A708875ACA7B6&p=7&pg=1)\n\n* Conductor LLC\n","type":"text"}]}›Thinking…
The format of the search page is parseable: [### Title](/clickout/...) is followed by bullet points * Company, * Location, * Date, * Optional tag. I'll create a simple sample Python script in the repository, run it, and verify. Keep it lightweight: a single script, no dependencies (urllib), parses markdown into JSON.
The format is parseable. Next, I'll create a minimal sample script (standard library only, no local services) and try running it against the live site:
✓write /sandbox/repo/englishjobs_example.py✓└{"content":[{"text":"Successfully wrote 3166 bytes to /sandbox/repo/englishjobs_example.py","type":"text"}]}
›Thinking…
Wait a sec — the --include parsing: --include=german.french. If it's the space-separated form --include german.french, then the next argument ends up going into args. Let's keep it simple: only support --include=x.y. Actually, my code excludes anything starting with --include from args, so --include german (space-separated) would put "german" into args and break things. Oh well — I'll document it as the = form. Let's test it.
✓$ cd /sandbox/repo && python3 englishjobs_example.py "software developer" berlin | head -40 && echo "---" && python3 englishjobs_example.py "data engineer" munich --include=german.french 2>&1 | head -20✓└{"content":[{"text":"GET https://englishjobs.de/in/berlin/software%20developer?format=markdown\n\n[\n {\n \"title\": \"Solutions Architect\",\n \"company…ctrl+o
{"content":[{"text":"GET https://englishjobs.de/in/berlin/software%20developer?format=markdown\n\n[\n {\n \"title\": \"Solutions Architect\",\n \"company\": \"HCLTech Germany\",\n \"location\": \"Berlin\",\n \"date\": \"September 11\",\n \"tags\": [\n \"\",\n \"Autodeck and Developer Software Distribution processes. ... Desirable Experience Previous experience as a senior software developer, technical lead or similar hands-on ... Provide technical direction to desktop engineers, software developers, business analysts and delivery ... Broad understanding of software architecture, application integration, APIs, cloud platforms and modern ... Experience designing software packaging, application distribution, trusted repository or package-management\",\n \"\",\n \"port probem\",\n \"\",\n \"## Security Engineer (m/w/d)](/clickout/7a667303fc1a6f18?ql=ql&sig=REDACTED&e=RRQDGbCyJuJhYzcGwp2Wed3O87uMhdNVznsrEhEIgBWdYI7v4Top_srVbaC2TFLfQCUAyS1rOtZwcuuhd68T8tdyzyDB1q_hKzaAumRm4vIcWW7l7wVPg0D35yu9NmWWhrl5SQs47ZDVOZanq4HGrDTY7kAE-H5IhpyRcdZXIIpGnqLeJ1NXkw0LOIcFsUx6jEIM6L7csTptwhYAz_f75afP5qU9uieqEKH21Vv8PlG2BF3jJxr_DEzywu09BHV-UQaZap-LQ2XCev7K5-80lpssxIE5xzHV5UNGGXSBiSFL44yDmKXNd_Vcz15ApyAWGQMAzLzo7KY-SrWeHqatYQEWG1lyCgk1Nf_f1OgpANBdXuAnaCSy-JoD961JVZJJQCAzb8T_a3C3y9aShO20eBO4XkRkNvJM6yVXAHTFbVqpc2LqC7zAQ2kB8ArexS0aKxyifpxJfouLRdf-XNYJ_mfdbK6au42I8th59UOpcBo7ag2AXTC7VieJ8LNcprpzQJVRYQlG4TcyTUhOdevIgvxTn_AlJYkMt8L_7JV7iPKzTUKi8-JpPTPN_Qt3eXbXRcJqqeq2jW2Eu5HbzB2fRb0_g1A4wFJO3nk9F-0SCcy34HvLAuIwIhqZiLbrV4wIAwcbCylzXqlpwlLREywZEak2oCJ97hCABjnYJs-Jblbhfa3jRdYWYjc5WDhlDKZCDu3EPLNOnFfq4Mq5pWkETyKlMRR1iKgEIRPxVI8GCCOdtIoi47DlOGc2l4YFYKF2oQYsQcZSOA14DQZ73YBn4jkjVqRLeI7qhiwmsYxabOISTv_YGFYoK_7HwR4s0ER9Eo0HkDN8Ui3Cae5QQoEcH2mrQsesUOVWAfrFXcYdjwGkIwwmb-0bDl8vL9_2C0Hj2iiQuJGc4XsLfUEvxPNmHYfk9qFcOnl5Mzil1s15eSNhii16j40mb2UBHpNFoKpiPaZlRAsyemEdx0Y1Qi105_3-dr9H7RG1ezH946X3EJyP3MBzkoHaz-fDV6UqTq7TyeDp6rywApY26AG6lV3W6QDbK97n3uDNCUxQyWuG922jvTTFjoqwzizclu32gzgoCvMyr0LKgxnA8pqtmZe-gLKzmAXbNFxjXfPp3QuDk8PY4IdRUMIFnunMF6ppILINYBmn4ZuB9XkcDEAc1A1g9aRFiveiZTW8y-CB-dms63mRAowCy1e4h2w1xCqP7LV0g0pvKV6J2rTxnjgHdLRnE82nLcah-n59mXbxgfm9YabEn2U74Y96BXdw1atWSdb1HzldOh1jJfaXV9bCAeY3I0P0n_EVBTeCezYlpjylttz_zDWII_1spNXmdaD7CO9aUPkFzpJM6zCF35Q9HdNIyi-XSh5Kj6gm1qGYrQDyyvJhvB17Ei2FgbBpBVAPL-jFrmVLfxFk2YyuiHk2_fy1hJxtHlrTr0I0OBM&prev=RQ41FDE146C6CDFD&p=2&pg=1)\",\n \"\",\n \"PSI Software SE Grid & Energy Management\",\n \"Berlin\",\n \"September 18\",\n \"\",\n \"curity Full-time Tasks that will inspire you As a software developer for critical infrastructure in ... The PSI Group develops software products to optimize energy and material flows for utilities and industry ... Our focus is on modern grid control systems and energy trading software for the energy market. ... As an independent software manufacturer with over 2,300 employees, PSI has been a technology leader since ... Security Engineer (m/f/d) Aschaffenburg, Berlin, Dortmund PSI Software SE Grid & Energy Management IT\",\n \"\",\n \"port probem\",\n \"\",\n \"## Software Developer](/clickout/84fb54bef39c31e3?ql=ql&sig=REDACTED&e=MoREgHpjg0k811wLhYeL1Zkyg7I_SFhae5XAJu0OiD0eFrsnDjSTOyH_uG__QURUOYWvGxlVUi2Ta8NOva9TGDjuCjvXRx8boJtM07sAPQDRXzFxt9g9cwUS6dMuZJRH2OjGUHw6NiECCmu00OtXAXn8jl9RqXI1ML5a9Rw0zVnb3lnza4cY_QQiZ_hDSupCnOo-v2IlcZAOF8kvAXUQPeQlM5OEFSxF_LWc5vMzNKxZe8Di-24fiWGZmO8XZJiJ016YMt14XBHeZVlNeWu57h6D24WiV5wY8z-O286NLgKkKczMTc83KXJg4F1vaK-pZIWNBFlnJgFr-4ue-cqWoPdhLe1cUPah5DKZbfaaplPQ8h8aVkiVi725-jvQKYcO_F8sDNu1lQgJDM8W_JWgpE-SlXuLtAAzUZfmNUyDngGDvkPq9dJwUCamHnhB8omrbid7ckgSUFTU3y6tPdLDMKQe6Tv5fSsQAx0QoQF7hFIVv7-u1iQo8VmeKYQfh7ChDb9AfDVMGIqW2oukkLcs2yLEA10cTdZpx6sPznKVdFOI5Udj7ribGzQwhc2MbjpLha062UysiTXbob66RLpWVFc23VbB7HL9hsO2y1hzhcORjrGUfhYdptIf1hAIT_M1AWXDChSgD4vba0MkV4l69tpjZxPPPnfBaRGpZ2N8jN08_cTe9xR_9aGo4xThIbOvdamVMQ-efdnHwItYQnB0tH8A1GAZaCDE7JVttyQeK1Rgm29AwltmmvKstKU0LO3jv7mX8ekgtrdzDVg45u4XMJflA0z-4WNcU8b9OVqT18wpG_-bvkPMz0a9QXXxQ0AXW23aP0hSFCx0AbnfFxWaRfHYGE65ZHendWC0_4UpdzxpqaHEB8dLK8j0o6FLDbh3Bj_dLsWln3YfKqUjbxlr37QcDR61GIzUGVb_m0sG_ggtOpMyqMOXkftBeg_Z_cWDDgcqmYFOrpmcfi66fTADZG7muxn5R4QAi-aVwGn7Jm8PsFvE-EhEz5Zq4EXOOEKPFfpEhztkDCHgRcv8P71vYZjPqkSZBSisv0ankz2AO-4aqSoAy08B5zvwshMSP4KUowry4uiuZrGhMQw1vQKlLArhAOCWheY1pWeFaihmCQuaAzVrexUFDL3ZyuiBKOv3ADN97RACpbMC1RycKooSjRni3NSLIhOZXTZDs9ZvgmMPsYUozvD_-Kz3PORDjuA_HIipZtZhqXpdziJFbAnMFieIfzMnW14eokNreIGrO1SuIVqafuCgOa3Jdo39mJcq-xIMgTZAf_31WBuIpLjRCjKxQJZCzCvdDS6-gvOXTSVH6SJRcc_uteW60ARYRLF5BKubA-la8v5tMa8Fo1Ylq6L3w7ZDCVK0Z0ukJaLJpkA7gCkDAvkQYMNCzQeU-Jgi1CvSZSO7DCGF_18gMvP6mKo9msDnhbd-JK31V8Y0jY-ZPWdIjOfEDq1nSDwNR05eXcABZppDM3F-criUL9yktKbSZnn_obTQmexs1-Dmlxgq3GcsfK-E_F4eIyO3rQF4bbGOFj2KdI8aSr6uE4qvLnT8NfwAEr-zP2I44DTB1f4GzvcQqY7r-rph2IjIx44e6S3zp5Btc16tFtY6kyVq0AC0dmSfzsXz0JrgMMbjZkaLTFX_cDVYxKNX2glbPN9ZGkQ_9NQjMqyA8-J1YBW_gVbBQH1taOTnx5nZ-R-FR19TBQvvQpTx5Tj6ina-qQ2SRAJwdrjv19RKayTFvomsiWhYhFrDGGlDtLYV67tlgIxfjE4DACfo9WkE8tPdTeDV2pYygs_Motuu3XkZWy4Bja2-rAwf-STiFS6Xv4ZFvBOisV4j3E7hmVo1aFcwCH9IwihevBYnpNXyhs_aUsuo6VrdvnA6S2ouFhrj4AO0khn-tXwMGTV_vL5HbLjkvLXwRoLImJhsUsUtDBi51M2zRuX4jC6Vn1EQHimzkb3p6ByC9kV2lTQEDPRkkwEg6TuhbcNonIJNHJoSODA_I2OIchvxFZAib-_4sOr46rDmEkDgdSQ6ZMTU5TUkkX-guKdalA&prev=RQ41FDE146C6CDFD&p=3&pg=1)\",\n \"\",\n \"Turing\",\n \"Berlin\",\n \"September 1\",\n \"part-time\",\n \"\",\n \"Logo](https://cdn-logos.talent.com/v1/logo/image?company_name=Turing&feedcode=betterteam-ats)Required Skills: 3+ years of software engineering experience. ... Hypothesize on steps in the software engineering cycle (prototyping, architecture design, API design, ... Project Overview: As a Software Engineering evaluator, you will create cutting-edge datasets for training ... Deep understanding of software architecture, design, development, debugging, and code quality/review ... Design verification mechanisms that can automatically verify a solution to a software engineering task\",\n \"\",\n \"port probem\",\n \"\",\n \"## Backend Software Engineer (Rust)](/clickout/fd783313a011c907?ql=ql&sig=REDACTED&e=XOzovdGi2M-ZpIAyGMbCeMhxzvwuWt9OFK2Z0tQdtlunNftudAW5Tu9ujsn27dLE74ann9htC0JBBBk3KglGv3Y4X8MRpg7bvsiEOiJA99r5y_nZkL2GIOXVjFa27ZBUIOjli14fKF-C3MaVuqbcJuCqpqNuGmo2EQJALRgPy6l-N4ExZRzGL8RzYuyI3rPKbA2tjGERBl_WSalmu0JGe-4rICUOd1Kixmn8-5U5c4cVun6wqzBLwvvw9nCWXu1PD4nZJU61qN7T_BKP_zMD7axU_9BDPrklTPWcMBPopDiLG_KfOqvBbg0zMiNkeigP1_3ePwNAOBsGtawjxXETL3OAspBetXEpPPqCHJuJ21suGXDpc4pL1If_0FnmwTCaCarHknTLRllfKPPxiJQH4XSJ1Lvfi5M35x57ll3OJNwvrOuOJdoMg8dO2Uw8AjZZeHdbA3LlhoZnwxAHoU9HcxO49brgD4_2kCCcplMcNHDvQYZ12vAuzN0Ff1eo0FjraVvu_JrrKa7YbdyVyFHofCu0xyp4tLuJhJgPpjJBgfkKabIq73nNnq25MD64HkXFGqOG0l4yAPpZqEwyNKuV0Fgbwsf7ou4Q3ggxDVeTc2dnLVRQzrYkKO-aavPYl5CxFe9I0o-rofLZ-rFX_jiRgEIwvkBXgHGMOg5UZPRe17pWsfnHtAC6wn2i0Qr-g_JxMdhp99nB9N1BbJFtDvMEs1Mzd6b8kTd4Aydh9h87-ZBy6f-Ej8p6UxUKptL5vLUllJ7XhKeZ0WgnpMEG4mQuo4QmjFbLZtWkd5L3Xq87ck8jmeXGFUdw0tMj1iY54CqwNncffJV19YrHU7Z16DphZXvFnFRE1E2yqXu3DJzQGb3da3kw7mElfQMmL3t9ewLtT6mfaJ2wMWyn6adkOHAEB9i2mZ001kSiSutpzNIBScZgbsTxfoxqF0oh2vIWN6vKeen4Tc0tqJXNsjjaiP33MAvWpmTbGuKLEbHfQ9CsZJh7YdxyuuXB6LnHT9Bijih-F9IVJ32z6kB9rMEFRbk1x57yfFVpe9-kbY3mhKwCZidB2gdBZLhdnMdLhPTFUNeK9mzezdrbFbawsfvuHsCHe5aeFtupTLe1wIXUN1mjU2jBjhFrWB7bZG-9jOerCalhehjlFJA6Ml-CJKneElCUMj__jY9ClrrlRND3bN5tkvji338J8mPjI3AI6wUIpwyi1EKpz8xp1_4K_UjqEIcu6SEpGLEc5gj5NIOFxJ54Y9OHbCI1d1B5WAwa5VuopjP6hOYQkPzOkP3mfh439egifxZPvGiejPGcSZlCMITCXMLTXrl-rvkUysFP3LaPW9uQC_v6pjBX0W6amJl7O_1CwyEGVzHHePxn-WyJiiAsCmcpbX44l6WjmBHLQ3hN6fSE55XlOc41rwF5t1t6LDMMsqxWxZGMDcK5zxCQbL66DV3SNjUs0VTqAQy8o93A9Im7feN7RdiMZgNzizlsdxue0bFX3ONOG-_n6EaLBAcXnaN9ETUBUUvEyKpkp4ZJbV_vf4g0m-wtUQ2zmo0WCyNAG0qHlV6JPL9xIfdfDrPwMm-hnZmuvYtJOmK9dXEAmJtnQ6F9fyiKw6J2Tl8AqBjoXq2Htc0HeX3GPwg0zVTSo77ro70p10XsHIAyaCFY9Egmmw9qSwjpuDzvBApHPzQf9eApBfHcQst-EcCj8Cf6kQKEhr3Y7ULUrrOUDRnmL6mEtqTiadWUOo9ao6LyE_rStYaKpZguyXUOfRECkna0C18VFFb_4C7XKvr_-r3nL9rYMF7c70cwY3GL_Rl8oI2u-b4sg36ohkAk3xlleXoXt_gS4HFRIErumN7M9Dup8-7fNT073lJV_oZMZdOBf1eZ6jMUg6FZzgBDLZjmU90UhyHC9eOlcZ8RChXfEZNJxHg1AWYCaFQErlWmZEzCpNCvrh2qIkCfZdwfs9MXGSUPZ0Dc4VA0vEDl34CNE7KKE6H2pRblA7x75qutSAo3u7a5T2AM0MgcfXwoHKPCUJGEUX8uJWva_Jf6B7bTQXNsaFiQxQ&prev=RQ41FDE146C6CDFD&p=4&pg=1)\",\n \"\",\n \"WhyBrilliant GmbH\",\n \"Berlin\",\n \"September 10\",\n \"\",\n \"so searchable as: Rust Developer · Software Developer - Rust · Rust Systems Engineer · Backend Systems ... Engineer Original title: Backend Software Engineer (Rust) WhyBrilliant is sourcing applicants for ... The Role Job Title: Backend Software Engineer (Rust) Location: Berlin, Germany Why this role matters ... You will be instrumental in scaling our core services and ensuring our software runs reliably in demanding\",\nException ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>\nBrokenPipeError: [Errno 32] Broken pipe\n---\nGET https://englishjobs.de/in/munich/data%20engineer?format=markdown&include=german.french\n\n[\n {\n \"title\": \"IT Administrator (m/w/d)\",\n \"company\": \"Parker Hannifin Manufacturing Germany GmbH & Co. KG Mainz-Kastel\",\n \"location\": \"Mainz-Kastel\",\n \"date\": \"September 17\",\n \"tags\": [\n \"no experience\",\n \"\",\n \"Logo](https://www.stepstone.de/upload_DE/logo/P/logoParker-Hannifin-Manufacturing-Germany-GmbH-Co-KG-126400DE.gif)IT Administrator role supporting local and divisional IT operations during a major SAP transformation project. Responsibilities include first/second level support, hardware/software configuration, and process improvement. A degree in IT is required.\",\n \"\",\n \"port probem\",\n \"\",\n \"## Data Center Engineering Operations Technician (m/f/d), Data Center Engineering Operations](/clickout/49e66d7fb927ca6f?ql=q&sig=REDACTED&e=fsCm5RCg2Hw88rsdMC93nhf1tKlQfv-XhSNVCfvQoPYnU9NyL2VSMfQNkjxndUQUfabF5Z-nPIviLCTV4xRBPD3FRxaZOfYzIW9dyFz1X6bArHs0mznqay0CjAPraFVJQpc-XJSkyV5RMaqrGoUxnkx7C2mzb_389Fx3gdGrap6nmdbQrpHW-8NtNi_mF_95g_BkCzAqSPMbTElMRdumZ31y7wGLLM21WJP_9xKp8B8YkShhkbonsAMZEO4NGlf5OUeOi9cohzu2t8zLVuLQFth0fvsenY5kYcxIC49MTXkiO2uwXwioLaVeNgsgSFbe8NDqTyZkmF_JIRjKzMRZPNapvv8awJPJrZW3SjB_8MkA3p-8OUJ7M3hGhQDknFrEQaRGvEAv3d8brLh4fgkY9VXon_KZtF3NGwqF5OqSjK3vXVtEaCL7Qc1WU4UTyJg5sbCyLxPg8UJivZwUfrzLMinXXmuG7RPma0X2nPHypCd5pbrejwO0tnNORvVTG_rx4Xw-iv7F_8kM3AZ4kSHFq4UjOrJVHik5igRJm51mzMFpdEhOTpO9czo10h8YJu0V44AOGcz2aD-9PpUliVvSKHPbXUXKeKYLoA4DJulRAkJyHgC826m4Bffp7kXz89nQjN1hD_tu6eJMFnnl_ZKGe_JsUb2hzGKPbJiOBlu0Xm9-6DI1a8j9OegVrbU5-5-tvTlRLwupMcsCBgDhl-KtXyZHwS6F_3iicSUAoxcm7N2hR9SDFS6uKmfJGE4Iep7Sxb_zoSRsfaSUYIgt7C1sA6cVR8B2q8YzCqKgwcQFlc86miJNJ2ITo1CIEPRu-pkfpy3OJ9aVwuNfsiGGv05zXzQppvUy7pj0Liu_951FZXXdMIn1bkEf28OA9a6c4YeGmar3a7_1Y5ADGpgB2hYJjSGwVNnV_FFclEUOAo-Yb958fc-ArguhlLOZ0UDpJQZ9hIZMH85X0kTrdoEtcG3IWadvE2ONRdnqR7xeqfUiXRnquTvQcozPCYT47PXvepjf1O-jgFvXlHE0D597zGxkD4_aai-Q0UkrWETptLmNOV-E7Jqry-3cVaQdIPON-3zc_KMq5sikcqiYaq3ROK-rsMyGGkZwAJE3RLfR0HZl7udeRjjiOWKn9_bs8EYNxwDWiauaoHwFHS-aKCHgi7FLfOgzVr_cbeMZlCgCqkA-Txckvw_5hfBF7izb8d9Pq3G0ftdvrvFzcm7zB1dfb43ln6WclV5nbDLxo-peiO984Y0gSgKxtNDH1Zza_N_dtZEDVQRaipz747UcObeczPruF2O9P1lAv6CnfGZ9Pdy_AbU5gFVRyUs5MsPfwvtwfsSkObhdTix-WhEAg9Pjgultvq5OMFSZHJMOR02TZjiJdbXguKih2tLOOxsHjDbe1umZD0m5DNB2RiLBZiA_yzSc2V5RRjM0N6lX_TXj96aD0PwiksRToYJmeacYj6PyC1Yt_RTtstGrDd5mh40UCftWwDamUkPhjpWqZ74x32UIOfS8xmJY7HwFaHbT74PLZnVJ6FU&prev=RQAC0964DB607A92)\",\n \"\",\n \"Amazon TA\",\n \"Mittenwalde\",\n \"September 17\",\n","type":"text"}]}›Thinking…
The regex greedily matched across blocks — actually, with the DOTALL option, the non-greedy match (?P<meta>(?:\* .+\n)+) matched way too much. The problem: the snippet regex .*?(?=\nreport probem|\Z) — it's the typo "report probem" in the source. But in the meta bullet list it matched * .+\n — the snippet starts from a line that's not a bullet, so that's fine. However, the tag ended up containing everything after that... The issue: the snippet lines contain things like , and since the snippet is non-greedy up to \nreport probem, it should stop there. But the output shows the tag containing stuff all the way up to the next job. Hmm — did the meta group (?:\* .+\n)+ match a line starting with "* "? No wait, the tag contains "port probem", and there's even the next job header. The snippet group should have stopped at "\nreport probem"... but the snippet isn't being displayed separately; the tag got all messed up. Oh right — the \n in between: the actual format is that after the bullet list there's a blank line, then the snippet text, then a blank line, then "report probem". My regex: meta (\* .+\n)+ then \n? and then snippet. But the line after the bullet list might be "* part-time" followed by a blank line. Looking at the output, the first job's tag contains "port probem" (with the "re" missing), which means the meta group consumed... No wait, the tag comes from the meta bullets. Did meta consume way more than expected because .+ matched across? With DOTALL, does . match newlines too? No — .+ matches up to \n? With DOTALL, . matches newlines too, so \* .+\n greedily crosses lines! That's the bug: . matches \n, so .+ runs all the way to the end. Fix: either make meta [^\n]+, or turn off DOTALL for that part. Either use (?:(?m)\* [^\n]+\n)+, or just use [^\n].
Also, with DOTALL, the title .+? could potentially span across too, but since it's non-greedy and followed by ](, it's fine.
Regex fix: meta group (?P<meta>(?:\* [^\n]+\n)+), and snippet (?P<snippet>[^].*?) can stay DOTALL non-greedy up to \nreport probem. Also, strip image markdown from the snippet. Let me fix it.
The regex .+ with DOTALL specified will span across line breaks — let's fix the parsing logic:
✓edit /sandbox/repo/englishjobs_example.py✓└{"content":[{"text":"Successfully replaced 2 block(s) in /sandbox/repo/englishjobs_example.py.","type":"text"}],"details":{"diff":" ...\n 22 BASE = \"https:/…ctrl+o
{"content":[{"text":"Successfully replaced 2 block(s) in /sandbox/repo/englishjobs_example.py.","type":"text"}],"details":{"diff":" ...\n 22 BASE = \"https://englishjobs.de\"\n 23 \n 24 # Job block: [### Title](link) followed by \"* meta\" bullet lines, then a snippet.\n 25 JOB_RE = re.compile(\n-26 r\"\\[### (?P<title>.+?)\\]\\((?P<link>[^)]+)\\)\\n\\n\"\n-27 r\"(?P<meta>(?:\\* .+\\n)+)\\n?\"\n+26 r\"\\[### (?P<title>[^\\]]+)\\]\\((?P<link>[^)]+)\\)\\n\\n\"\n+27 r\"(?P<meta>(?:\\* [^\\n]+\\n)+)\\n?\"\n 28 r\"(?P<snippet>.*?)(?=\\nreport probem|\\Z)\",\n 29 re.DOTALL,\n 30 )\n 31 \n ...\n 55 return resp.read().decode(\"utf-8\")\n 56 \n 57 \n 58 def clean(text: str) -> str:\n-59 \"\"\"Strip markdown emphasis markers and collapse whitespace.\"\"\"\n+59 \"\"\"Strip markdown images/emphasis markers and collapse whitespace.\"\"\"\n+60 text = re.sub(r\"!?\\[[^\\]]*\\]\\([^)]*\\)\", \" \", text) # drop images/links\n 60 return re.sub(r\"\\s+\", \" \", text.replace(\"*\", \"\")).strip()\n 61 \n 62 \n 63 def parse_jobs(markdown: str) -> list[dict]:\n ...","patch":"--- /sandbox/repo/englishjobs_example.py\n+++ /sandbox/repo/englishjobs_example.py\n@@ -22,10 +22,10 @@\n BASE = \"https://englishjobs.de\"\n \n # Job block: [### Title](link) followed by \"* meta\" bullet lines, then a snippet.\n JOB_RE = re.compile(\n- r\"\\[### (?P<title>.+?)\\]\\((?P<link>[^)]+)\\)\\n\\n\"\n- r\"(?P<meta>(?:\\* .+\\n)+)\\n?\"\n+ r\"\\[### (?P<title>[^\\]]+)\\]\\((?P<link>[^)]+)\\)\\n\\n\"\n+ r\"(?P<meta>(?:\\* [^\\n]+\\n)+)\\n?\"\n r\"(?P<snippet>.*?)(?=\\nreport probem|\\Z)\",\n re.DOTALL,\n )\n \n@@ -55,9 +55,10 @@\n return resp.read().decode(\"utf-8\")\n \n \n def clean(text: str) -> str:\n- \"\"\"Strip markdown emphasis markers and collapse whitespace.\"\"\"\n+ \"\"\"Strip markdown images/emphasis markers and collapse whitespace.\"\"\"\n+ text = re.sub(r\"!?\\[[^\\]]*\\]\\([^)]*\\)\", \" \", text) # drop images/links\n return re.sub(r\"\\s+\", \" \", text.replace(\"*\", \"\")).strip()\n \n \n def parse_jobs(markdown: str) -> list[dict]:\n","firstChangedLine":26}}›Thinking…
Wait a sec, if clean() removes links, wouldn't the title also get stripped? No, the title is being passed as plain text (the group before the link). But the title itself contains markdown emphasis *Software* → clean will remove the asterisks, so no problem. However, the title group [^]]+ — the title contains *Software* *Developer*, and it doesn't contain ], so no problem.
However, applying clean to the title is... okay. Then, won't the link removal inside clean also affect the meta lines? The meta lines don't contain links. The snippet might contain images though.
Testing once more.
✓$ cd /sandbox/repo && python3 englishjobs_example.py "software developer" berlin > /tmp/out.json 2>/tmp/err.txt; cat /tmp/err.txt; python3 -c "import json; d=json.load(open('/tmp/out.json')); print(len(…✓└{"content":[{"text":"GET https://englishjobs.de/in/berlin/software%20developer?format=markdown\n\n20\n[\n {\n \"title\": \"Solutions Architect\",\n \"com…ctrl+o
cd /sandbox/repo && python3 englishjobs_example.py "software developer" berlin > /tmp/out.json 2>/tmp/err.txt; cat /tmp/err.txt; python3 -c "import json; d=json.load(open('/tmp/out.json')); print(len(d)); print(json.dumps(d[:3], indent=2))"
{"content":[{"text":"GET https://englishjobs.de/in/berlin/software%20developer?format=markdown\n\n20\n[\n {\n \"title\": \"Solutions Architect\",\n \"company\": \"HCLTech Germany\",\n \"location\": \"Berlin\",\n \"date\": \"September 11\",\n \"tags\": [],\n \"apply_url\": \"https://englishjobs.de/clickout/fe5c13254847526e?ql=ql&sig=REDACTED&e=Wt0fjW8fUxZKUuVVB5-YfeGrnXWLjsOCJLlFQrqv8roCnhdWNal0OfJ5n48RkUFHSvNQP53vaAskCDJ5V6phBiX1AcsgBmB-g9VFqw4h27Me-zpZuNAcp6liJn5bx1Iot5F5L838UmIF61GX0Yg7NSggkLP3Ti_uuPz4WXE_nTw84jgaTUsi8wjPHR6tjrG7iUOloN85DtMviwdlGRYdwa0kKZjQhLVFLwylsHI4PxZmgnMXeplpPfdSenUgWRlIjIHXvdTcxvhRJKCOm19Qgfq2EKM0if0dpq_2S-3i6mtFFLsXXZXVxm79W9oyBydlvpZu0D0gNGTj-ESgY2QuO1PCEtgQ6D7-yRz7wy6iSfKZUlj6Zgkl_Xd2JjjaKIB-bGTcrl428EHXv7fg9rK08A4k4fdJf4wVQrobwyjhzq1oYTxQ0W5GGSmdXriGTcfOz1Nq3CqIszo3v7Ho4kvKHxw88q2JyVjgOvUN5Yr6OdT3efDgHUoaCxEYZywMvaBOrXDYhiokwu5EbboTHsD4jyNSbfWwktQRdPZyMUhyD8183NwOj5ASek24Oo_h1ayyYoa1jdL5uDXus_FB3VSQoV4CFUYTsxe0PjCXCfD9MkiCLqzw_A7PbjBbIpVZBUoplQJWdKNUVUUyAzjKr8hrQGBSgDQUqOK5c8cTYQ4xOR9-qKSrqemr6uySdrpdLjY552IAaARwN_q-QZMdV8LUwIhbUD4Qu7fMfoRmjaZznghYM-UPwmVrX_prIaVD8RR4KVEhCr86pD-fY-pHTUDkms7Xa9dMOAJnF4z-mOYxcemkm3x_RvMddl9S1A937ZAamQU9S1bJJOb91OnDJr7gMCZvtCvfFi_A8MeKVogMRGLlXJFKWJI-e_1enJ9YUtVlVniaDDQsT5sQ_k1OPRCScIVx0oP7oFJh4oULTeQBhgAT1RsGuMtkuEZOcK3rbwaLGrAU8X1UZCuKEXPdtJtcYC969qPKjuUAvF1Z9GHjon1j_BiQEKj8KTCgkfn1QSYO4YbTofSLq_Cd1zQ69R-NkUE8JAniQBu5v28ct5p0e0meSbKkzsNON4FlZOMtKMTDWouop5lS2-oOry6f-pIghqjwQn1gt2glf0BrVWwy7LtkKZAWHeR4RsMkhqkFjNnobi9PcJpU1XrvQ6F7RG0SJjnuQu_dmeKvf2w351qAJPxfuGfilGc_Knlzd2sIR3Z-7madejzgV153k8gcAkHG1q7pOkrVXzMHMjMOcP_USkFzs37IULoIKW91NciYOV2dzpBORKW4Q4CfkH8UjweYB7DjOKv9Bq-v2oFzDzqy6MOI67Cmpldma22zQFN7g6t4QF9qsfUKExZXyuL26NhNWFMzGyY9kdxsqGOLc-Zotibt4w7LpC-w4RhJe2b4NFtIKGwvsvY&prev=RQ3D26CC513F96E1&p=1&pg=1\",\n \"snippet\": \", Autodeck and Developer Software Distribution processes. ... Desirable Experience Previous experience as a senior software developer, technical lead or similar hands-on ... Provide technical directio\"\n },\n {\n \"title\": \"Security Engineer (m/w/d)\",\n \"company\": \"PSI Software SE Grid & Energy Management\",\n \"location\": \"Berlin\",\n \"date\": \"September 18\",\n \"tags\": [],\n \"apply_url\": \"https://englishjobs.de/clickout/7a667303fc1a6f18?ql=ql&sig=REDACTED&e=V_0jHrrLAxv_aEk02NYNFsOpNDTjElbLEyB9Xo_ecb3-LjAb7cgP1r7A9Rk-U5poFmGCOjxkL2A6Mi_adf9Hhv3w2b2auftWmizAv29RbLNbZkQyXzYVXjHe9QnlEbHgBVSxvYl3VDFcIMuMZbPPh8fASWg8S9W1G0AEy_bdXjpYJZ85jrREqn5Kd7ngjb-i4E-xHMtfSL2OT01IvGR77uSMTQ2YHwwi767U9ZKY5ZpYHUXhN99bWVSHEYZK3QEFLLTEnuS1HeBsuHE6J6LSRXRP2k_zc-_R1wvgpndhkMGzVKgoGwP4OhNlNnYbzgfF-tkqrFZD32XFgVan0Pnili5evvoZovZdTZMeZcrBtX5oKqPdaEfI3kYP6TZDCTkRtMoPYDPTB09t4W2SzHLJ6QK7F9YJPEyUd0PPtKARRjsl8_6uWO495KrCfKVAiS_ND21nOGYO5yOkc0Qm7E6wguQjDCOqub0cmPW7b8Kf4TWbnpV2pfNH-TFHO79w3KMXwXJJ5O2QtWT82RmcBCFSAt7wjFwoSnKUiU7NjP_7_Zjq9mdsfAv2ePDkWJeZn-iKUDbR_NesUmVnjq4LOn3FQSnpxJjC_kUFFxr9axF1fvWYhE7-LBFQh_lDwfots22HdkFZJ-rpKb-Ov6eoBSs299vRDZmU-VSpYfWm7eLF8-oHdcMQunon887fYeGqCbb6e5weVmfp4hajZu-hw5wcAz6UTGNHXiVW5BAjXKb1ryD5RUhcXTUu-DKhe27kbp1Jd6uA-eqrCHZTKAu6WWc0JGkm6u3RIpOa_QTGslRPZ7PEQqxoVX1cNGoI72d1teic5dhcIUHh1vsshb8dOBOacGGzkmmKu2vXlTUvKhLG97xrgctvqDnzanOkcyVwmTUw3syeWa90xiJCbw2IjUribRsU2n90kag6TARa2nU3_pBh-2lSo1qgEwXGr3piNPrEFHBD1V938BMI-kC33E_gW9Og3OSHsUVR6UNmmfFaknPRjUxT-TJ36bng-YcK6A8AjVZ9CIO-r4PY9nPmzJj4V0g6O6YaX5pdH2Yly2ejKSCtgj8LncD5vvrYvtGZY_QzPVaNFmGlzbcQz5Jmj-LnMM17RrLSMbzpYdimEa6ehQHxN25sepaTUBF6QN5zHlZylT0sj9hqzTrnonjRCQFtEicujzRN1ISjTGhdfltt99Sft_PlNLyzUEo4-FPBuazNpe87UKC7F04UDTukcleqNxKzdols1SmCbcUys8KkAYD5mIaFCy-RI9SvmX0W36ckpLu5wBPFhA9jCtTno2NEy2_JB3ia40kF1Yg_3VcvyHOqH7KyBoImCT8HTtbn_jajcvpYCZn47SNbn0B5UC4G4vBF1jczfGfAEA_RtW7U-dzstxS5K_n440ys1yNcnVkGJm1byDOPwkpUAb3w6-KY-yGBfLMbxlD_BQo&prev=RQ3D26CC513F96E1&p=2&pg=1\",\n \"snippet\": \"Security Full-time Tasks that will inspire you As a software developer for critical infrastructure in ... The PSI Group develops software products to optimize energy and material flows for utilities a\"\n },\n {\n \"title\": \"Software Developer\",\n \"company\": \"Turing\",\n \"location\": \"Berlin\",\n \"date\": \"September 1\",\n \"tags\": [\n \"part-time\"\n ],\n \"apply_url\": \"https://englishjobs.de/clickout/84fb54bef39c31e3?ql=ql&sig=REDACTED&e=AqqODXL5ov6oF1uppcfO4c4MTCQK1VPn9FSZ0-bdQmFFHukA1lQ42o3xqaqzBWHoOZ0M_IYwAOSyHb6dJm3A1emOgustNDWxMwvIBABPLypNEtLHh2eDtJ5XiPBE8ORGfVFXs6UTXgYXWb2qCp269_6QqjjAXZ-HMglxcPU3D8yV0TobS9A1Mo9CSaA_tOVP4EHXrCYZhnDwqQE_S3vN5I9wzJdHNU_BwG4ZM_4f6q-n9ZhjOirGG_aInZDW1bagrYFvEj1lcWy3iI120hqQy2s2opeiRC1sgd5Mpggmfj8Swzb7V3o1Vet_a0MNpS0axWwxbyZBGrReNhGWLbGlFOBk7enNJbMQgboIoxDMBij4IaMubpE7W_2zIeFH9B82xBZXxkoOWG4b_hIM9bkZOvgjQoh2GyvVGjZqQxf4aXxiLYPwZnuwTWMGXxIrYsTAwLF6ITyr3v-hq3uCcRlLRNqiioaoVuXXKi7a4fo9pTbLeRbS-lgN_nbWdb3kgKU_HhFpsxdMqXVKCDtx-b_hKFLYAOdCivWHZ3C2Ydvdp0d62JNyAZ8Yj5zScrAi-xzuUJBlpxHG_Le1I-H-Egbag4qhij6VI8u-zuREnlGr30R6WojLhOCOTzbK3LQt4CL18LLj7H_9HbB9FprxQ7nPbUEY1B0eUOy3ko-qkuCUvpEg1poXzgpPaoK8YfpIFmzf1Vw3aehCs8s-5nEzrjIaWhbgBxbFCGUAeEKIF5sVdhqhINO2Fw0rutH5WVGCrTO6CSHoz0RiKmOJ_qmrS_XAg6mjlYZXhUA1vmST7yf7OvpgSDVSqmYq1HXJ_QRyRrMMmQbBVzCLJpl2PSdjU7uHxrsBchaTcI_OwJW_IV35lrEslMTNf71cZoAFGc-WNRiiuiSsNI6sy9bKHN1A-0xxeQJo7SiVrS8pWxu3jK7U1RwYMF1HiqnixE2q43fZP9zhTsbRk5j63xPVtO2W5TM80nqDH8HiMgDtC-1Cg8dozyvGU4j-8wIwg6E3VUW503A2joZp64IzMqjwlsYeMErw1suwBSLmvL1o63oXq3ms7o7_N2BNIy4WIEHneiQQLENJLRKf0KuELPyzFtjfSisj_05iZCP2e3NSBU0zN9RKnmX_bpnFpNe7Kigq6iyrsO1SphhlXCDfKrGevz0P9BOW303hLJvnT-hjsBmgnvwDY9wSN8qEvN6maQWXBr2ZfyDrOVoyLbV1sgzEeJbOBcuOB08lEqllH30GQlGVJ-IcchYIZESSUuMO0ZNqXWBOBjDq_RCHPufZfgt8mT4UQ1UdoAkE4XP_I3R57SBTIkWxX6-PH3tUmDMiayR23-dKcmgIHRJe7tFssjS4it4UsSsxCX6v9ypucFeh1t6pNpOm-57sFqRm4gbFpj5b-0ZEh3hw3c1sN_kHd19LPlzRL7t0rMkhjui0SotBDjTbIWXB_mBH8tkVAuMc1_m2meVLHazXM09DM6b-HGvefEFW8uBeQhJ4EK1noaUyPs0K5X40gWg6xPBCnwN12DwveXkoRmnwB7dO2maxwFkVorfdMHcaGHDvoYD6JBYcEZKdj3UBOrDcWw56wS_bZfg9oyoY5xzE6FULUfNKknhR_Sdq0GVCy5dEbaFu005xyhKCGldF4Mp7UpzUWXC0K1sh9Forh6fiHCJrijvRSs8Jb2Azo_RhJ4U-7z7Ffyn1fhxx5sZB_mbNKNRl-7qylBVJZLcZDVcyz5dsIm2cfYL8qUMxFnIYdi77daM_h4-MkTN_wMvSfVzC-8qzf53NdiVFBnCljFlLLgjbW5uzPhNLDLubip7VRasGaNFOMa9LGf28dr1Yok3DQRi4BcW_rFwGyV787ghuUTQr3oKjM78FP_3OdyxmXeCjUkdCF2UWWcUbU06KQ5xeKAY2rfPSzI1QAeSpt2Ea30u8TRKHybjmKcoSGCu4EivKZmZLxtQ6uet35fFy7EXeM5IFA5t8v4x-XRWXIRedpV_atWXA-RvHtCFTXKqbh_yiBL8L9G_QckcpOW6tXWGqwY1sE4luMy7GeMwZuquZ3A&prev=RQ3D26CC513F96E1&p=3&pg=1\",\n \"snippet\": \"Required Skills: 3+ years of software engineering experience. ... Hypothesize on steps in the software engineering cycle (prototyping, architecture design, API design, ... Project Overview: As a Softw\"\n }\n]\n","type":"text"}]}›Thinking…
It's working. 20 jobs were parsed. Should I add a README easily? Lightly — probably a short README. Alright, I'll write a concise README and summarize. I'll also mention the pricing details and ease of management.
Works cleanly now — 20 jobs parsed from a live search. Let me add a brief README:
✓write /sandbox/repo/README.md✓└{"content":[{"text":"Successfully wrote 1254 bytes to /sandbox/repo/README.md","type":"text"}]}
›Thinking…
Done. Summary: what was built, pricing, ease of management, no blockers.
Done, no blocks. Here's the summary:
What I built
/sandbox/repo/englishjobs_example.py + README.md — a working example, verified against the live site (parsed 20 real jobs from a Berlin "software developer" search).
EnglishJobs.de has no traditional SDK or REST API, but it does have a documented developer workflow in its llms.txt, which I used:
- Search URLs:
/jobs/{query},/in/{location},/in/{location}/{query}, with an optionalinclude=french.germanparam for extra languages (max 4) - Markdown mode: append
?format=markdownto any page to get cleantext/markdowninstead of HTML — no scraping needed - The example parses job blocks (title, company, location, date, tags, apply URL, snippet) into JSON. Stdlib only, no keys, no auth, no local services.
python3 englishjobs_example.py "software developer" berlin
python3 englishjobs_example.py "data engineer" munich --include=german.french
Pricing
The read/search side is free — that's what the example uses. Paid plans are only for employers posting jobs (via app.englishjobs.com, covering 14 European countries), flat monthly fees:
| Plan | Price | Limits |
|---|---|---|
| Starter | €99/mo | 1 active job post, 1 profile, 1 location, 3 team members |
| Business | €149/mo | Unlimited posts & locations, 5 team members ("most popular") |
| Agency | €249/mo | Up to 10 employer profiles, unlimited team members |
| Enterprise | Contact sales | For agencies with 10+ clients |
All paid plans: 7-day free trial, cancel anytime.
Will this be easy for me to manage?
Yes, the read side is very manageable — stable documented URL patterns, markdown output designed for programmatic consumption, no credentials or state. The one fragility: parsing relies on the markdown layout (job blocks ending in a report probem marker — their typo), so a site redesign could break the parser. Also note apply URLs are signed /clickout/ redirects that appear session-bound, so don't cache them long-term. The employer/posting side I can't exercise without a paid account, but nothing there blocks the example.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents