
An Actor is a hosted program that collects data. A Task is a saved input preset. A preset is a named set of inputs you can use again. The Indeed Jobs Scraper is the Actor here. It collects listing rows from Indeed, a public job site. You assign every experience class yourself. The Actor does not assign those classes.
A public Task is only a starting input. It does not mean the Actor will judge the listings for you.
Write your rule first
Entry level has no single rule in this Actor. You must write the rule before you read the rows. The inclusion rule is the sentence that decides which listings match your goal.
This article uses one inclusion rule. The description must say that no prior relevant experience is required. Relevant here means experience in the same kind of work.
Mandatory means the listing says you have to have that experience. The words required and must signal this. Preferred means the listing asks for experience but does not say you have to have it. Explicitly not required means the listing says the experience is not required. Training offered means the listing says training is provided. Unclear means those signals are missing. Explicit means the listing states the point in words.
“Two years preferred” is not the same claim as “Two years required.” A bare number is not enough. A title is not enough. Read the words beside them.
You could write a different rule. One example is explicit paid training. If you choose that rule, count only under that rule. Do not mix two rules in one count. The fictional count later uses only the no-prior-experience rule.
A search label is not the employer’s full rule. A listing can say junior and still require a professional license. A license is a separate condition. Training does not cancel a license, a test, a degree, or another proof the listing requires.
Collect a sample you can read
The current public build is 1.2.14. It accepts searchTerm, country, location, maxItems, maxPagesPerSearch, postedWithinDays, sortBy, and saveOnlyUniqueItems. Do not assume other input names work.
The saved public Task was current on 2026-10-13. Its input is broad. Use it as a start, not as your reading sample.
{
"country": "us",
"searchTerm": "software engineer",
"maxItems": 100,
"postedWithinDays": "7",
"sortBy": "date",
"maxPagesPerSearch": 2,
"saveOnlyUniqueItems": true
}In this saved input, country `us` means the United States. searchTerm is `software engineer`. maxItems is 100. maxPagesPerSearch is 2. postedWithinDays is the text `7`, so the input asks for the last seven days. sortBy is `date`, so the input asks for date order. saveOnlyUniqueItems is true.
A role is the kind of job you mean to read. A market is the country, plus a place if you set location. For a first check, set one role and one market. Set maxItems to 2. Set maxPagesPerSearch to 1. Replace `software engineer` with that one role. Set location only when you need one place.
A cap is the most you asked the Actor to save. maxItems caps rows. maxPagesPerSearch caps pages for each search. A cap of 2 lets you read every saved description. It does not tell you how many jobs exist. A run inside seven days can still miss listings. A run is one execution of the Actor.
A compatible current control used a small cap. It returned two rows. On each row, the ID and the URL pointed at the same listing. descriptionText was full. The run reached its cap and stopped. That result supports text collection only. It is not a finding for the fictional rows below. It is not full coverage of the market.
Save the raw rows. Save the input you actually used. Save OUTPUT and any cap or failure note. OUTPUT is the saved result file. An empty result does not prove that no jobs exist. A reached cap does not prove that you saw every job.
The Actor supplies current public text. It does not supply older descriptions. It does not supply the time an employer edited the text. It does not supply applicant status. It does not supply a training plan. It does not assign experience classes.
The fictional ledger below is not a software-engineer result. It is not the two-row control. The saved Task and the fiction have different jobs.
Keep these fields
A field is one named value on a row. A row is one collected listing record. Use jobId, title, companyName, locationRaw, descriptionText, descriptionStatus, jobUrl, query, searchLocation, and scrapedAt.
Keep jobId as text. If you store it as a number, a spreadsheet can change it. The ID must stay the same text you collected.
descriptionText is the collected description. descriptionStatus tells you if that text is available. `full` means description text was collected. `missing` means it was not collected. No snippet status is promised. Collected text is not a promise of the employer’s whole document.
seniority, employmentType, salaryRaw, postedAt, and postedAtRaw can be missing. Missing means unknown. Unknown is not zero. A blank seniority field is not an entry-level label.
title, seniority, and query are labels. They show the name or the search. They do not replace descriptionText. postedAt is the publish time the source gave, when that field exists. scrapedAt is the time the Actor collected the row. Neither time proves a later employer edit.
Before you compare rows, use the published duplicate and repost guide: Jobs duplicates and reposts. A listing published again can look like a second job. Do not treat two copies as two different employer rules. The unique setting in the Task does not replace that review.
Do these eight checks
- Write the inclusion rule in one sentence before you collect. For this article, the rule is that no prior relevant experience is required. You may also note explicit paid training, but do not mix that note into the same count. Write the rule first so a title cannot change it later. The Actor does not repair the job site search. You can only check rows you collected.
- Check identity and text before you judge a row. Match jobId to jobUrl. Read descriptionStatus. If the status is missing, mark the description unavailable and stop. Keep title and any seniority value as labels. Then read the requirements in descriptionText. A row can appear in the search and still fail your rule. A place in the results is not a promise from the employer.
- Find each experience sentence and the limit words beside it. Limit words include required, must, preferred, not required, and training. Copy the exact sentence with jobId and jobUrl. Assign one class: explicit mandatory, explicit preferred, explicitly not required, training offered, or unclear. If training and experience both appear, record both. Do not fold them into one word. A bare number still needs those limit words.
- Record education, proof, and same-work conditions on separate lines. A degree, a license, a test, or a tool skill is not an experience class. Do not turn a training sentence into a pass on those conditions. If one listing states two different experience rules, keep both sentences and mark a conflict. Do not keep only the easier sentence. This extra pair is fiction for this step. It is not one of the six rows below. One line says “No experience required.” A later line says “Three years required.” Those lines conflict. The result is conflict, not a pass.
- Build a ledger row for each collected listing. A ledger is your review table of exact words and classes. Include the claimed label, the experience class, the other conditions, the training statement, the text status, and the review state. The review state is your label under the written rule. Use `supported_label_under_rule` when the description supports the rule. Use `label_conflict` when the label and the description disagree. Use `unclear` when the words do not decide the rule. These three states belong to you. They are not Actor fields.
- Count only rows with a known jobId and full description text that belong in the sample. Keep unavailable descriptions in a separate count. Keep unresolved IDs in a separate count. An unresolved ID is an ID you cannot tie to one listing. Do not read a missing experience line as zero years. This sample cannot tell you why the employer used a label. It cannot tell you why the search used a label.
- Make a small reading list for closer reading. A preferred condition can stay on that list. It is not an automatic rejection. A mandatory sentence is evidence in the listing. It is not a personal exception. Only the employer can accept an exception when you apply. When you later compare your own work history with one role, use the skill-fit guide. Do not add a score for how hirable you are.
- Deliver the ledger with each source ID and URL. Before you apply, read the employer instructions on the application page. The collected description may not match that page.
Class six fictional listings
All six rows below are fiction. They are not Actor output. They are not the two-row control. No real employer result is claimed. The IDs are teaching text. They have no live URL. companyName and locationRaw were not supplied. Leave them unknown. Do not invent them.
The sample rule has two parts. First, keep entry-level rows. A senior role is out. Second, in the remaining full texts, apply the no-prior-experience rule.
J1 has the title Junior Analyst. The description says, “No previous analytics experience required; training provided.” It also requires a spreadsheet test. The experience class is explicitly not required, because the listing says prior analytics experience is not required. That matches the written rule, so the review state is `supported_label_under_rule`. The same sentence also offers training. Record training offered as its own note. The text does not say the training is paid. Do not add the word paid. The spreadsheet test remains required. A test is not experience. Meeting the experience rule does not remove the test. Next, read the test before you rely on the training words.
J2 has the title Entry-Level Analyst. The description says, “Two years professional analytics experience required.” The title claims entry level. The sentence says two years are mandatory, because it uses required. The written rule asks for no prior relevant experience. The description does not match that rule. The title does not change the description. The review state is `label_conflict`. Next, keep the two years as explicit evidence. An exception belongs to the employer, not to this ledger.
J3 uses these words: “One year preferred; new graduates welcome.” The title is not stated in this example. The class is explicit preferred, because the listing says preferred and does not say required. The rule asks for words that say no prior experience is required. J3 does not say that. A preference is not a mandatory bar. A preference is also not the sentence “no experience required.” Do not count J3 as meeting the rule. Do not reject it for that one preferred year alone. “New graduates welcome” is a separate statement. It does not cancel a condition that is not written here. Keep J3 on the reading list. Next, read the whole description before you decide.
J4 uses these words: “Experience with reports.” The title is not stated. The sentence does not say required, must, preferred, or not required. It does not offer training. A bare experience phrase has no class. The review state is `unclear`. Next, do not fill in must, and do not fill in zero.
J5 is a senior role returned by the search. The entry-level sample does not include senior roles. J5 is irrelevant. Exclude it, and keep the exclusion note. If you drop the note, the collected set will look smaller than it was. Next, do not put J5’s experience words into the entry-level count.
J6 has no full description. Its descriptionStatus is missing. You cannot class words you do not have. The experience need is unknown. Unknown is not zero years, and unknown is not a pass. Next, leave J6 out of the classed count.
| Row | Claimed label | Exact experience words | Experience class | Other conditions | Training | Text status | Review under the written rule | Next reading step |
|---|---|---|---|---|---|---|---|---|
| J1 | Junior Analyst | No previous analytics experience required | Explicitly not required | Spreadsheet test required | Training provided | full | supported_label_under_rule | Read the test. Do not ignore it. |
| J2 | Entry-Level Analyst | Two years professional analytics experience required. | Explicit mandatory | None stated | None stated | full | label_conflict | Do not trust the title. |
| J3 | Not stated | One year preferred; new graduates welcome. | Explicit preferred | New graduates welcome | None stated | full | Preferred; keep for closer reading | Do not treat one year as mandatory. |
| J4 | Not stated | Experience with reports | Unclear | None stated | None stated | full | unclear | Do not fill in must or zero. |
| J5 | Senior role | Not used after exclusion | Not classed | Excluded by the sample rule | Not used | Not used for this count | Irrelevant; exclusion kept | Keep the exclusion note. |
| J6 | Not stated | No description text | Unknown, not zero | Unknown | Unknown | missing | Unavailable | Do not class the row. |
This table is fiction. For a real listing, add the real jobId and jobUrl on that row. Do not copy these classes onto a real employer.
Count the fictional rows
The fictional set has six collected rows: J1, J2, J3, J4, J5, and J6.
Four rows have relevant full text you can class: J1, J2, J3, and J4.
One row is irrelevant: J5.
One row has unavailable text: J6.
4 + 1 + 1 = 6.
This set has no unresolved ID. If you had one, you would keep it with J6, outside the four.
Inside the four rows:
- J1 meets the no-prior-experience rule. That count is 1.
- J2 conflicts with the rule. That count is 1.
- J3 has preferred experience. That count is 1.
- J4 remains unclear. That count is 1.
1 + 1 + 1 + 1 = 4.
Do not call one out of four a success rate. A single rate would hide the difference between conflict, preference, and unclear words. Those results need different next steps. Do not call the rule a universal definition of entry level. These counts describe only these fictional sentences under one written rule.
Judge one listing from its words
Choose one real listing. Copy its experience sentence with its jobId and jobUrl. Mark that sentence mandatory, preferred, not required, training offered, or unclear. Put tests, licenses, and education on separate lines. If two experience sentences disagree, keep both and mark a conflict. If descriptionStatus is missing, write unknown. Compare those words with the entry-level label only after that ledger row is complete.
The check is finished when the ledger shows the exact words, the class, the other conditions, and the text status. It is not finished when the title says junior or entry level.
Sources & further reading
By Chronometrica · Updated
Back to top ↑

